我什么时候需要全球空间的功能?

时间:2014-12-02 11:42:22

标签: php

我试图理解从全球空间中要求函数的原因。

PHP手册中的示例:

namespace A\B\C;

/* This function is A\B\C\fopen */
function fopen() { 
     /* ... */
     $f = \fopen(...); // call global fopen
     return $f;
}

在哪种情况下,为什么我需要一个全局空间中的函数,如本例所示?请有人澄清一下吗?

1 个答案:

答案 0 :(得分:2)

A\B\C内部fopen命名空间调用将在此命名空间中解析。因此,如果没有明确指定全局命名空间,调用将导致无限递归:

function fopen() { 
  $f = fopen(...);  // ERROR RECURSIVE CALL TO ITSELF
  $f = \A\B\C\fopen(...);  // ERROR THE SAME AS ABOVE
  $f = \fopen(...); // call global fopen ⇛ WORKS

请注意,如果当前命名空间中没有此名称的函数,则无需显式指定全局命名空间。