9

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

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

}

我以前从未遇到过那个“\function”-东西,也无法从我的教练那里得到解释-有人可以请教。帮助阐明一些光...?

4

2 回答 2

8

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

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

于 2013-07-11T14:00:44.760 回答
5

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

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

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

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

于 2013-07-11T14:02:31.520 回答