Я только что получил ошибку.
Когда я пытаюсь назначить такой объект:
$obj_md = new MDB2();
Ошибка, которую я получаю, – «Назначение возвращаемого значения new по ссылке устарело». На самом деле я искал решение, но единственное, что я видел, это просто отказаться от политики php.ini (error_reporting). Я тоже пробовал, но это не сработало.
Это так запутанно. Надеюсь, ты сможешь мне помочь. Заранее спасибо.
В PHP5 эта идиома устарела
$obj_md =& new MDB2();
Вы уверены, что не пропустили амперсанд в своем примере кода? Это создаст предупреждение, которое вы укажете, но оно не требуется и может быть удалено.
Чтобы узнать, почему эта идиома была использована в PHP4, см. Эту страницу руководства .
Недавно я переместил сайт с помощью SimplePie ( http://simplepie.org/ ) с сервера, использующего PHP 5.2.17, на тот, который использует PHP 5.3.2. Именно после этого хода я начал получать список сообщений об ошибках, таких как этот:
Устаревший: назначение возвращаемого значения new по ссылке устарело в … / php / simplepie.inc в строке 738
Рассмотрев несколько обсуждений этой проблемы, я очистил все, заменив все экземпляры = & new с = new в файле simplepie.inc.
Я недостаточно опыт, чтобы знать, будет ли это работать во всех случаях, когда эти сообщения об ошибках принимаются, но он работал в этом конкретном случае, и может быть стоит попробовать.
Возможно, у конструктора MDB2 есть код, который использует переменную $ variable = & new ClassName ();
Нитин прав – проблема действительно в коде MDB2.
Согласно Замену для PEAR: MDB2 на PHP 5.3, вы можете обновить версию SVN MDB2 для версии, совместимой с PHP5.3.
Поскольку этот ответ был дан в марте 2010 года, а http://pear.php.net/package/MDB2/ показывает выпуск несколько месяцев спустя, я ожидаю, что текущая версия MDB2 также решит проблему.
& используется в PHP для передачи объекта методу / присваивания нового объекта переменной по ссылке. Он устарел в PHP 5, потому что PHP 5 по умолчанию передает все переменные по ссылке.
У меня такая же проблема. У меня уже было «&», и все-таки это давало такое же предупреждение. Я использую PHP 5.3 с WAMP, и все, что я сделал, это УДАЛИТЬ & & подписью, и предупреждение не было.
$obj= new stdClass(); //Without '&' sign.
Это произошло из-за PHP 5.3, который поставляется в пакете WAMP 2.0i, а не в Joomla.
У вас есть два варианта, чтобы исправить это,
либо использовать WAMP 2h (предыдущая версия), либо загрузить PHP 5.2.9-2 с сайта WAMP.
Обновите свою грушу / MDB2 с консоли:
# pear upgrade MDB2-beta # pear upgrade MDB2_Driver_Mysql-beta
Проблема решена в версии 2.5.0b3
просто удалите new
в $obj_md =& new MDB2();
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