反斜杠作为函数名前缀的作用是什么


What does backslash do as prefix to a function name?

在准备ZEND考试时,我发现了一个问题,其中一个类重新定义了strlen函数:

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

我以前从未遇到过"''功能"这件事,也无法从我的教练那里得到解释——有人能帮忙吗。帮我澄清一下。。。?

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

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

'在PHP 5.3中引入,是一个名称空间分隔符。

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

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

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