我试图理解从全球空间中要求函数的原因。
PHP手册中的示例:
namespace A\B\C;
/* This function is A\B\C\fopen */
function fopen() {
/* ... */
$f = \fopen(...); // call global fopen
return $f;
}
在哪种情况下,为什么我需要一个全局空间中的函数,如本例所示?请有人澄清一下吗?
答案 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
请注意,如果当前命名空间中没有此名称的函数,则无需显式指定全局命名空间。