Не можете повторно назначить $ this?

У меня есть сценарий на сервере с 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);