Присвоение возвращаемого значения new по ссылке устарело в PHP 5.3 - PullRequest
2 голосов
/ 16 июля 2011

Мой сайт имеет устаревшую ошибку в этой строке:

$obj =& new $class($table,$primkeyArr,$this);

из-за &.Это выдает эту ошибку:

Deprecated: Assigning the return value of new by reference is deprecated in ....

Это проблема в php 5.3.

Если я удаляю & из этой строки, ошибка устраняется.Но я не знаю, вызывает ли это какую-либо проблему, если я помещаю свой сайт на сервер с более низкой версией PHP (5.2) или нет.

Будет ли удаление & нормально работать как в PHP 5.2, так и в PHP5,3

Ответы [ 3 ]

5 голосов
/ 16 июля 2011

В PHP 5 объекты по умолчанию обрабатываются как ссылки.Таким образом, удаление &, вероятно, ничего не изменит.

Но так как назначение по ссылке разрывает старые ссылки, все равно может быть разница .

1 голос
/ 16 июля 2011

Не рекомендуется возвращать ссылку, но не отражать это в ваших функциях или в сигнатуре методов. Должен быть знак & перед именем, а также при присвоении возвращаемого значения.

public function &getValue() 
{
  return $this->value;
}

...

$myValue = &$obj->getValue();

Инструкция расскажет вам больше.

0 голосов
/ 16 июля 2011

http://php.net/manual/en/language.references.pass.php

Это просто предупреждение.Вам это действительно не нужно, но короткий ответ заключается в том, что он будет выдавать только предупреждения.В зависимости от уровня error_handling в вашей конфигурации PHP будет зависеть, если вы видите его на других системах 5.3.

...