63

我刚刚有一个错误。

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

$obj_md = new MDB2();

我得到的错误是“不推荐使用通过引用分配新的返回值”。实际上我一直在寻找解决方案,但我看到的唯一一个就是拒绝 php.ini (error_reporting) 的策略。我也试过了,但是没有用。

这太令人困惑了..我希望你能帮助我。提前致谢。

4

10 回答 10

96

在 PHP5 中,这个成语已被弃用

$obj_md =& new MDB2();

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

要了解为什么在 PHP4 中使用此成语,请参阅此手册页(注意 PHP4 早已失效,此链接指向相关页面的存档版本)

于 2009-07-06T11:42:46.063 回答
28

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

不推荐使用:在第 738 行的 .../php/simplepie.inc 中不推荐使用通过引用分配 new 的返回值

在查看了有关此问题的多次讨论后,我通过在 simplepie.inc 文件中将=& new的所有实例替换为= new来澄清问题。

我没有足够的经验知道这是否适用于收到这些错误消息的所有情况,但它在这种特殊情况下有效,可能值得尝试。

于 2011-10-11T20:33:47.413 回答
9

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

于 2009-10-28T11:11:42.283 回答
8

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

根据Replacement for PEAR: MDB2 on PHP 5.3,您可以更新到 MDB2 的 SVN 版本以获得与 PHP5.3 兼容的版本。

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

于 2011-08-24T13:31:01.493 回答
7

我有同样的问题。我已经有了“&”,但它仍然给出了同样的警告。我正在使用带有 WAMP 的 PHP 5.3,我所做的只是删除“&”符号,警告就消失了。

$obj= new stdClass();  //Without '&' sign.
于 2012-06-29T02:05:22.790 回答
7

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

于 2010-10-29T05:16:19.947 回答
2

new只需删除$obj_md =& new MDB2();

于 2016-08-12T03:05:39.347 回答
0

这是因为 PHP 5.3 发生的,它来自 WAMP 2.0i 包而不是 Joomla。

你有两个选择来修复它,

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

于 2011-03-11T05:19:32.460 回答
0

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

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

2.5.0b3 版本解决的问题

于 2015-06-16T23:11:20.033 回答
-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
于 2010-12-09T15:00:58.373 回答