不建议通过引用分配new的返回值

2020/10/26 14:42 · php ·  · 0评论

我刚遇到一个错误。

当我尝试分配这样的对象时:

$obj_md = new MDB2();

我得到的错误是“不赞成通过引用分配new的返回值”。实际上,我一直在寻找解决方案,但是我唯一看到的就是拒绝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代码中。

根据PHP 5.3上的PEAR替换:MDB2,您可以将MDB2的SVN版本更新为与PHP5.3兼容的版本。

由于该答案是在2010年3月给出的,并且http://pear.php.net/package/MDB2/在几个月后发布了一个版本,我希望MDB2的当前版本也可以解决该问题。

我有同样的问题。我已经有了'&',但它仍发出相同的警告。我正在将PHP 5.3与WAMP一起使用,而我所做的只是删除'&'符号,警告消失了。

$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插件。

从控制台升级pear / MDB2:

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

在2.5.0b3版上解决的问题

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
本文地址:http://php.askforanswer.com/bujianyitongguoyinyongfenpeinewdefanhuizhi.html
文章标签: ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!