反斜杠作为函数名称的前缀做什么?

MBa*_*aas 8 php

准备ZEND-Exam时,我发现了一个类重新定义了strlen-function的问题:

namespace MyFramework\MyString
{
  function strlen ($str) 
  {
    return \strlen($str) * 2; // return double string-length
  }

}
Run Code Online (Sandbox Code Playgroud)

我之前从来没有遇到过"\功能"的东西,也无法从我的教练那里得到解释 - 有人可以.帮助摆脱一些光......?

hol*_*ple 7

它从全局命名空间调用一个函数.

只有当前命名空间中存在同名函数时才需要它.


Lor*_*con 5

PHP 5.3 中引入的\是命名空间分隔符。

在您的示例中,外部 strlen 是 MyFramework\MyString\strlen,内部 strlen 是全局的。

在没有任何命名空间定义的情况下,所有类和函数定义都被放置在全局空间中——就像在支持命名空间之前的 PHP 中一样。以 \ 为名称前缀将指定即使在名称空间的上下文中也需要全局空间中的名称。

参考:http : //www.php.net/manual/en/language.namespaces.global.php