В Интернете [1] [2] [3], говорится, что, поскольку PHP 5.0.0 "присвоение возвращаемого значения new по ссылке" дает E_DEPRECATED
или E_STRICT
в зависимости от ваша версия php (E_DEPRECATED
не существовала до 5.3, поэтому до этого она была E_STRICT
).
Как таковое, я понимаю, что этот код должен дать такое предупреждение:
error_reporting(E_ALL | E_STRICT);
class A
{
}
$a =& new A();
Тем не менее, я пробовал это на двух совершенно разных серверах (один работает с PHP 5.3 и один работает с PHP 5.2), и ни один из них не дает никакого сообщения! Что происходит? Является ли мое понимание неправильным или что-то странное происходит на этих двух серверах?
(Мне также кажется странным, что это устарело, потому что $a = null; $b =& $a; $b = new A();
не делает то же самое, что $a = null; $b =& $a; $b =& new A();
, но это только часть вопроса, если я неправильно понял то, что устарело...)