Как я могу переназначить значение переменной объекта из самого объекта в PHP? - PullRequest
0 голосов
/ 04 января 2012

Я создаю класс с методами проверки строк. Я не могу переназначить значение для ссылки на объект следующим образом:

class clearText
{
    private $text;

    function __construct($input)
    {
        $this->text = $input;
    }

    public function clearUp()
    {
        // …
        // functions to sanitize the string in $this->text
        // …
        $this = $this->text;
    }
}

$content = new clearText($_POST['content']);
$content->clearUp();

как показано в примере выше:

Неустранимая ошибка : Невозможно переназначить $ this в \ clearText.php в строке 13

Когда я вызываю clearUp(), мне больше не нужен объект, поэтому я хотел бы не указывать это назначение, как здесь, каждый раз, когда я вызываю метод:

$content = new clearText($_POST['content']);
$content->clearUp();
$content = $content->text;

Есть ли способ сделать это внутри метода ?


Возможный ответ

Кто-то предложил вернуть значение, чтобы я мог переназначить его переменной объекта в том же операторе, который выполняет метод. С тех пор ответ был удален, но он работает для того, что мне нужно.

Определение метода:

public function clearUp()
{
    // …
    // functions to sanitize the string in $this->text
    // …
    return $this->text;
}

При создании экземпляра:

$content = new clearText($_POST['content']);
$content = $content->clearUp();

Ответы [ 2 ]

0 голосов
/ 04 января 2012

Нет. $this фактически является экземпляром класса, с которым вы имеете дело. Вы не можете установить любое другое значение. Это «волшебное» ключевое слово, если хотите.

Так же, как вы не можете установить слово private для обозначения чего-то другого.

Однако вы можете уничтожить свой экземпляр, удалив $content.

0 голосов
/ 04 января 2012

Вместо вызова метода clearUp(), вызовите unset(). Присвойте строку другой переменной раньше. Однако это также обеспечит освобождение любой памяти, используемой объектом clearText:

$content = new clearText($_POST['content']);
$content = $content->text;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...