不build议使用引用来分配新的返回值

我刚刚得到一个错误。

当我尝试分配一个像这样的对象:

$obj_md = new MDB2(); 

我得到的错误是“通过引用分配新的返回值已被弃用”。 其实我一直在寻找一个解决scheme,但是我所见过的唯一一个就是拒绝php.ini(error_reporting)的政治化。 我也尝试过,但没有奏效。

这很混乱,我希望你能帮助我。 提前致谢。

在PHP5中,这个习惯用法已被弃用

 $obj_md =& new MDB2(); 

你确定你没有错过你的示例代码中的&符号? 这会产生警告你说,但它不是必需的,可以被删除。

要明白为什么这个习惯用法在PHP4中被使用,请参阅这个手册页 。

我最近将一个使用SimplePie( http://simplepie.org/ )的站点从使用PHP 5.2.17的服务器移动到使用PHP 5.3.2的站点。 正是在这一举动之后,我开始收到如下错误消息的列表:

不推荐使用:通过引用赋值new返回值在738行的… / php / simplepie.inc中被弃用

在回顾了这个问题的几个讨论之后,我通过在simplepie.inc文件中replace了所有的=&new with = new的实例来解决这个问题。

我没有足够的经验知道这是否会在收到这些错误消息的所有情况下都能正常工作,但是在这种特殊情况下,它可能是值得尝试的。

也许MDB2的构造函数有一些使用$ variable =&new ClassName()的代码;

Nitin是正确的 – 问题实际上在MDB2代码中。

根据在PHP 5.3上的PEAR:MDB2replace,你可以更新到SVB2版本的MDB2,这个版本与PHP5.3兼容。

由于这个答案是在2010年3月发布的, http://pear.php.net/package/MDB2/在几个月后显示了一个版本,我预计MDB2的当前版本也将解决这个问题。;

&在PHP中用于将对象传递给方法/通过引用将新对象分配给variables。 它在PHP 5中被弃用,因为PHP 5默认通过引用传递所有variables。

我有同样的问题。 我已经有了'&',但仍然发出同样的警告。 我在WAMP中使用PHP 5.3,我所做的全部都是REMOVE'&'符号,警告消失了。

 $obj= new stdClass(); //Without '&' sign. 

它发生在PHP 5.3中,它来自WAMP 2.0i包而不是Joomla。

你有两个select来解决它,

要么使用WAMP 2h(以前的版本),要么从WAMP网站下载PHP 5.2.9-2插件。

从控制台升级您的pear / MDB2:

 # pear upgrade MDB2-beta # pear upgrade MDB2_Driver_Mysql-beta 

问题在版本2.5.0b3解决

只需在$obj_md =& new MDB2();删除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