8

有什么办法可以避免经常使用反斜杠?

现在,如果我使用命名空间并在其中调用一些全局的东西,我必须使用反斜杠:

namespace foo;
$a = new \my\name(); // instantiates "my\name" class
echo \strlen('hi'); // calls function "strlen"
$a = \INI_ALL; // $a is set to the value of constant "INI_ALL"

在那种情况下,命名空间内的代码变得非常丑陋,有什么办法可以避免这种情况???

该示例取自该网址:http ://www.php.net/manual/en/language.namespaces.faq.php

但是我的问题是,如果我需要从命名空间调用一些内置类,我必须在名称前使用反斜杠,我可以以某种方式避免它吗?

4

1 回答 1

8

全局命名空间中的常量和函数不必在前面加上反斜杠。PHP 将回退到它自己的全局命名空间。PHP手册中有一整章解释了这一点:

在命名空间内,当 PHP 在类名、函数或常量上下文中遇到非限定名称时,它会以不同的优先级解决这些问题。类名总是解析为当前的命名空间名。[…] 对于函数和常量,如果命名空间函数或常量不存在,PHP 将回退到全局函数或常量。

于 2012-08-28T10:23:14.427 回答