不推荐使用的函数:require_once()

时间:2011-01-22 20:29:07

标签: php drupal soap-client

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

  

不推荐使用的功能:分配   通过引用返回的新值是   在require_once()弃用(第1行)   27的   C:\用户\ ajinkya \桌面\ XAMPP \ PHP \ PEAR \ SOAP \ WSDL.php)

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

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

Drupal 7中的

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

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

3 个答案:

答案 0 :(得分:5)

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

在古老的PHP版本中,

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

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

答案 1 :(得分:2)

  

这样可以抑制错误吗?

取决于。忽略错误绝不是一个好主意。保持严格的报告是开发阶段的好主意。但是,一旦PHP建议您使用类似的调试消息,就可以对其进行评估并根据该情况作出明智的决定。

如果不是实际问题,您可以解决上述问题,修复问题或忽略问题。

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

答案 2 :(得分:0)

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