Intereting Posts

Присвоение возвращаемого значения new по ссылке устарело

Я только что получил ошибку.

Когда я пытаюсь назначить такой объект:

$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