完全限定名称是没有任何歧义的,开头的反斜线和文件路径的作用有点类似,它表
“ ”
示 根 全局空间,如果我们在全局空间中实现了一个不同的 MyFunction( ),可以使
用\MyFunction( )从 lib1.php 或 lib2.php 调用它。
完全限定名称对一次性函数调用或对象初始化非常有用,但当你产生了大量的调用
时它们就没有实用价值了,在下面的讨论中我们将会看到,PHP 提供了其它选项以解除
我们为命名空间打字的烦恼。
◆限定名称(Qualified name)
至少有一个命名空间分隔符的标识符,如 Lib1\MyFunction( )。
◆非限定名称(Unqualified name)
没有命名空间分隔符的标识符,如 MyFunction( )。
在相同的命名空间内工作
仔细思考下面的代码:
myapp1.php
1. < ?php
2. namespace App\Lib1;
3.
4.
require_once
(
'lib1.php'
);
5.
require_once
(
'lib2.php'
);
6.
7. header(
'Content-type: text/plain'
);
8. echo MYCONST .
"\n"
;
9. echo MyFunction() .
"\n"
;
10. echo MyClass::WhoAmI() .
"\n"
;
?>
即使我们同时包括了 lib1.php 和 lib2.php,MYCONST,MyFunction 和 MyClass
标识符只能在 lib1.php 中引用,这是因为 myapp1.php 的代码在相同的 App\Lib1 命名
空间内。
执行结果:
1. App\Lib1\MYCONST
2. App\Lib1\MyFunction
3. App\Lib1\MyClass::WhoAmI
命名空间导入
可以使用 use 操作符导入命名空间,如:
myapp2.php
1. < ?php
2.
use
App\Lib2;
3.
4.
require_once
(
'lib1.php'
);
5.
require_once
(
'lib2.php'
);