Присвоение возвращаемого значения new по ссылке устарело
У меня только что появилась ошибка.
Когда я пытаюсь назначить такой объект:
$obj_md = new MDB2();
Ошибка, которую я получаю, - "Назначение возвращаемого значения new по ссылке устарело". На самом деле я искал решение, но единственное, что я видел, это просто отказаться от политики php.ini(error_reporting). Я тоже пробовал, но это не сработало.
Это так запутанно. Надеюсь, ты сможешь мне помочь. Спасибо заранее.
Ответы
Ответ 1
В PHP5 эта идиома устарела
$obj_md =& new MDB2();
Вы уверены, что не пропустили амперсанд в своем примере кода? Это создаст предупреждение, которое вы заявите, но оно не является обязательным и может быть удалено.
Чтобы понять, почему эта идиома использовалась в PHP4, просмотрите эту страницу руководства (обратите внимание, что PHP4 давно устарел, и эта ссылка на архивную версию соответствующей страницы)
Ответ 2
Недавно я переместил сайт с помощью SimplePie (http://simplepie.org/) с сервера, использующего PHP 5.2.17, на тот, который использует PHP 5.3.2. Именно после этого хода я начал получать список сообщений об ошибках, таких как этот:
Устаревшее: присвоение возвращаемого значения new по ссылке устарел в... /php/simplepie.inc в строке 738
После рассмотрения нескольких обсуждений этой проблемы я очистил все, заменив все экземпляры = & новый с = new в файле simplepie.inc.
Мне недостаточно опыта, чтобы знать, будет ли это работать во всех случаях, когда эти сообщения об ошибках будут получены, но он работал в этом конкретном случае, и может быть стоит попробовать.
Ответ 3
Возможно, у конструктора MDB2 есть код, который использует переменную $variable = & new ClassName();
Ответ 4
Nitin верен - проблема действительно в коде MDB2.
В соответствии с Замена PEAR: MDB2 на PHP 5.3 вы можете обновить версию SVN MDB2 для версии, совместимой с PHP5.3.
Поскольку этот ответ был дан в марте 2010 года, а http://pear.php.net/package/MDB2/ показывает выпуск несколько месяцев спустя, я ожидаю, что текущая версия MDB2 также разрешит проблему.
Ответ 5
& используется в PHP для передачи объекта методу/назначения нового объекта переменной по ссылке. Это устарело в PHP 5, потому что PHP 5 передает все объекты по ссылке по умолчанию.
Ответ 6
У меня была та же проблема. У меня уже был "&". и все же это давало то же предупреждение.
Я использую PHP 5.3 с WAMP, и все, что я сделал, это УДАЛИТЬ & & и предупреждение не было.
$obj= new stdClass(); //Without '&' sign.
Ответ 7
просто удалите new
в $obj_md =& new MDB2();
Ответ 8
Это произошло из-за PHP 5.3, который поставляется в пакете WAMP 2.0i, а не в Joomla.
У вас есть два варианта, чтобы исправить это,
либо использовать WAMP 2h (предыдущая версия), либо загрузить PHP 5.2.9-2 аддон с сайта WAMP.
Ответ 9
Обновите свою грушу /MDB 2 с консоли:
# pear upgrade MDB2-beta
# pear upgrade MDB2_Driver_Mysql-beta
Проблема решена в версии 2.5.0b3
Ответ 10
C:\wamp\www\..\libraries\pattemplate
1.ini_set('display_errors', 0);
$this->_modules[$moduleType][$sig] =&new $moduleClass; wrong
$this->_modules[$moduleType][$sig] =new $moduleClass; Right