在准备 ZEND-Exam 时,我发现了一个问题,其中一个类重新定义了 strlen-function:
namespace MyFramework\MyString
{
function strlen ($str)
{
return \strlen($str) * 2; // return double string-length
}
}
我以前从未遇到过那个“\function”-东西,也无法从我的教练那里得到解释-有人可以请教。帮助阐明一些光...?
在准备 ZEND-Exam 时,我发现了一个问题,其中一个类重新定义了 strlen-function:
namespace MyFramework\MyString
{
function strlen ($str)
{
return \strlen($str) * 2; // return double string-length
}
}
我以前从未遇到过那个“\function”-东西,也无法从我的教练那里得到解释-有人可以请教。帮助阐明一些光...?
它从全局命名空间调用一个函数。
只有在当前命名空间中有同名函数时才需要它。
在 PHP 5.3 中引入,\
是一个命名空间分隔符。
在您的示例中,外部 strlen 是 MyFramework\MyString\strlen,内部 strlen 是全局的。
在没有任何命名空间定义的情况下,所有类和函数定义都被放置在全局空间中——就像在 PHP 中支持命名空间之前一样。使用 \ 为名称添加前缀将指定该名称是全局空间所必需的,即使在命名空间的上下文中也是如此。
参考:http ://www.php.net/manual/en/language.namespaces.global.php