У меня есть сценарий на сервере с php версии 4. Теперь он изменен на php5, и скрипт больше не работает. Я получаю эту ошибку:
Неустранимая ошибка: не удается повторно назначить $ this в URL database.php line 88
В файле находится класс, который имеет функцию. Внутри находится линия 88:
$this = new $db( $serv, $user, $pass, $dbName );
Что означает ошибка и как я могу ее изменить?
$this
специальная «переменная», которая всегда относится к объекту, в котором выполняется текущая функция. Он имеет смысл только внутри функций, принадлежащих классу ; однако вам не разрешается использовать его где-либо еще, и вы никогда не сможете его назначить. Решение просто переименовать переменную.
Вы можете переназначить $ это значение переменной переменной
$name = 'this'; $$name = 'stack'; echo $this;
// это приведет к стеку
Класс пытается переопределить себя ($ this
в php совпадает с this
в C #), и это невозможно. Вы должны изменить $this
на что-то еще, и тогда ошибка должна исчезнуть.
$this
зарезервированное имя переменной и не может вручную назначить значение.
$ это предопределенная переменная в PHP.
Вот ссылка в руководстве PHP: Классы и объекты: Основы. В нем описывается, как внутри метода $ указывает на «этот объект», над которым работает. Тем не менее, он по-прежнему сохраняется вне метода.
Измените идентификатор на другое слово.
Вы можете использовать трюк refrences:
$thisRef = &$this; $thisRef = new $db($serv, $user, $pass, $dbName);