我应该在PHP中命名全局函数吗?

时间:2012-03-15 14:31:32

标签: php namespaces

在PHP中,我在类级别使用名称空间。但是,Netbeans一直告诉我命名空间我的全局函数。例如,如果我输入

str_replace('stuff');
然后Netbeans会建议将其更改为:

\str_replace('stuff');

这是一个PHP推荐,还是只是Netbeans过于热心?我无法在任何方式的PHP文档中找到任何内容。

我无法看到它导致代码中出现任何问题。然而,在不知道为什么它首先推荐它的情况下忽略Netbeans是错误的。但是,如果不知道这是正确的做法,改变我的编码习惯也不是正确的。

3 个答案:

答案 0 :(得分:5)

中没有这样的建议

也没有必要使用全局标识符,因为当当前命名空间中没有该名称的函数时,PHP将回退到全局函数定义。

有了这个说法,添加标识符的唯一原因是为了让你更明确地想要使用实际的全局事物来防止当有人在当前命名空间中添加同名函数时代码行为的意外更改。

您可能想在Netbeans Mailing List上询问有关IDE为什么建议这一点的详细信息。

答案 1 :(得分:1)

绝对过分热,但我无法重现这是Netbeans 7.0.1,PHP插件1.17.1。无论如何,这不是惯例,我根本不认为这是最佳做法。

答案 2 :(得分:0)

Netbeans根本没有遵循解析名称空间as documented的文档化规则:

  1. 全局类(如DateTime)需要合格,否则PHP将在当前命名空间中查找该类。
  2. 全局函数(如array_filter)和常量将在全局命名空间中找到(如果它们在当前命名空间中不存在,则没有显式限定)。
  3. 换句话说,根据记录的规则,您的代码应被视为惯用语。