我刚刚有一个错误。
当我尝试分配这样的对象时:
$obj_md = new MDB2();
我得到的错误是“不推荐使用通过引用分配新的返回值”。实际上我一直在寻找解决方案,但我看到的唯一一个就是拒绝 php.ini (error_reporting) 的策略。我也试过了,但是没有用。
这太令人困惑了..我希望你能帮助我。提前致谢。
在 PHP5 中,这个成语已被弃用
$obj_md =& new MDB2();
你确定你没有错过示例代码中的 & 符号吗?这会产生您声明的警告,但它不是必需的,可以删除。
要了解为什么在 PHP4 中使用此成语,请参阅此手册页(注意 PHP4 早已失效,此链接指向相关页面的存档版本)
我最近将一个使用 SimplePie ( http://simplepie.org/ ) 的站点从使用 PHP 5.2.17 的服务器移动到使用 PHP 5.3.2 的服务器。正是在这一举动之后,我开始收到一系列错误消息,例如:
不推荐使用:在第 738 行的 .../php/simplepie.inc 中不推荐使用通过引用分配 new 的返回值
在查看了有关此问题的多次讨论后,我通过在 simplepie.inc 文件中将=& new的所有实例替换为= new来澄清问题。
我没有足够的经验知道这是否适用于收到这些错误消息的所有情况,但它在这种特殊情况下有效,可能值得尝试。
也许 MDB2 的构造函数有一些使用 $variable =& new ClassName(); 的代码。
Nitin 是正确的——问题实际上出在 MDB2 代码中。
根据Replacement for PEAR: MDB2 on PHP 5.3,您可以更新到 MDB2 的 SVN 版本以获得与 PHP5.3 兼容的版本。
由于该答案是在 2010 年 3 月给出的,并且http://pear.php.net/package/MDB2/显示几个月后的版本,我希望当前版本的 MDB2 也将解决该问题。
我有同样的问题。我已经有了“&”,但它仍然给出了同样的警告。我正在使用带有 WAMP 的 PHP 5.3,我所做的只是删除“&”符号,警告就消失了。
$obj= new stdClass(); //Without '&' sign.
& 在 PHP 中用于将对象传递给方法/通过引用将新对象分配给变量。它在 PHP 5 中已被弃用,因为 PHP 5 默认通过引用传递所有对象。
new
只需删除$obj_md =& new MDB2();
这是因为 PHP 5.3 发生的,它来自 WAMP 2.0i 包而不是 Joomla。
你有两个选择来修复它,
使用 WAMP 2h(以前的版本)或从 WAMP 网站下载 PHP 5.2.9-2插件。
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