我刚收到错误。
当我尝试分配这样的对象时:
$obj_md = new MDB2();
我得到的错误是“不推荐使用引用分配新值的返回值”。实际上我一直在寻找一个解决方案,但我见过的唯一一个就是拒绝php.ini(error_reporting)的政治。我也尝试过,但它没有用。
这太令人困惑了......我希望你能帮助我。提前谢谢。
答案 0 :(得分:94)
在PHP5中,这个成语已被弃用
$obj_md =& new MDB2();
您确定在示例代码中没有错过&符号吗?这会产生你所说的警告,但它不是必需的,可以删除。
要了解为什么在PHP4中使用这个成语,请参阅this manual page(请注意,PHP4已经过时了,此链接指向相关页面的存档版本)
答案 1 :(得分:27)
我最近使用SimplePie(http://simplepie.org/)将一个站点从使用PHP 5.2.17的服务器移动到使用PHP 5.3.2的站点。在这一举动之后,我开始收到一个错误消息列表,例如:
不推荐使用:通过引用分配new的返回值是 在738行的/ php / simplepie.inc中弃用
在回顾了几个关于这个问题的讨论之后,我通过替换 =&的所有实例来解决问题。新的,在simplepie.inc文件中包含 = new 。
我没有足够的经验知道这是否适用于收到这些错误消息的所有情况,但它在这种特殊情况下有效并且可能值得尝试。
答案 2 :(得分:9)
也许MDB2的构造函数有一些代码使用$ variable =& new ClassName();
答案 3 :(得分:8)
Nitin是正确的 - 问题实际上在MDB2代码中。
根据Replacement for PEAR: MDB2 on PHP 5.3,您可以更新到MDB2的SVN版本,以获得与PHP5.3兼容的版本。
由于答案是在2010年3月给出的,并且http://pear.php.net/package/MDB2/显示几个月后发布,我预计当前版本的MDB2也将解决这个问题。
答案 4 :(得分:7)
&安培;在PHP中用于将对象传递给方法/通过引用将新对象分配给变量。它在PHP 5中已弃用,因为默认情况下PHP 5通过引用传递所有对象。
答案 5 :(得分:7)
我遇到了同样的问题。我已经有'&'而且它仍在发出同样的警告。 我正在使用带有WAMP的PHP 5.3,我所做的就是删除'&'标志和警告消失了。
$obj= new stdClass(); //Without '&' sign.
答案 6 :(得分:1)
只需移除new
$obj_md =& new MDB2();
即可
答案 7 :(得分:0)
答案 8 :(得分:0)
从控制台升级您的pear / MDB2:
# pear upgrade MDB2-beta
# pear upgrade MDB2_Driver_Mysql-beta
答案 9 :(得分:-6)
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