4

最近,我开始将 PHP 5.2.x 上的 Drupal 6 模块转换为 PHP 5.3.x 上的 Drupal 7,现在我收到以下警告

不推荐使用的函数:通过引用分配 new 的返回值在require_once()(C:\Users\ajinkya\Desktop\xampp\php\PEAR\SOAP\WSDL.php 的第 27 行)中不推荐使用。

WSDL.php 的第 27 行是:require_once 'HTTP/Request.php';

我无法弄清楚这个警告的原因是什么。require_once()PHP 5.3.x 中的行为是否发生了变化?

Drupal 7 中的 file.inc 有一行 :require_once DRUPAL_ROOT . '/includes/stream_wrappers.inc;并且它不会抛出任何警告。为什么?

如果我放入error_reporting(E_ALL & ~E_DEPRECATED);Drupal 7 的 setting.php,警告就会消失。抑制这样的警告是否很好?

4

3 回答 3

5

错误消息说代码正在使用$something = &new SomeObject();而不是$something = new SomeObject();.

&new在古代 PHP 版本中是必要的,以确保对象总是通过引用传递。但在最近的版本中,根本没有理由这样做,所以它已被弃用。

我不知道为什么您的 PHP 会报告错误的文件名/行号...

于 2011-01-22T20:34:55.013 回答
2

抑制这样的错误很好吗?

要看。忽略错误从来都不是一个好主意。保持启用严格的报告是开发阶段的一个好主意。然而,一旦 PHP 用这样的调试消息向您提供建议,您就会对其进行评估并以此为基础做出明智的决定。

您可以解决提到的问题,修复它,或者如果它不是实际问题,则忽略它。

不需要通过引用分配对象,因此不推荐使用。然而,这不是一个会导致错误的问题,而且它永远不会在语义上被禁止。在未来版本中删除语法结构会破坏兼容性,因此不会发生。在这种情况下,明智的选择是要么承认并忽略语法提示,要么删除它,&因为它是不需要的,并且在这种特定情况下删除它几乎不可能破坏行为。

于 2011-01-22T20:47:22.400 回答
0

我在 PHP 网站上没有看到任何表明require_once已被弃用的内容。也许里面的东西HTTP/Request.php被弃用了?这是一个非常奇怪的警告。

于 2011-01-22T20:33:53.550 回答