6.
7. header(
'Content-type: text/plain'
);
8. echo Lib2\MYCONST .
"\n"
;
9. echo Lib2\MyFunction() .
"\n"
;
10. echo Lib2\MyClass::WhoAmI() .
"\n"
;
11. ?>
可以定义任意数量的 use 语句,或使用逗号分隔成独立的命名空间,在这个例子中
我们导入了 App\Lib2
命名空间,但我们仍然不能直接引用 MYCONST,MyFunction 和
MyClass
“
,因为我们的代码还在全局空间中,但如果我们添加了 Lib2\”前缀,它们就变
成限定名称 了,PHP 将会搜索导入的命名空间,直到找到匹配项。
执行结果:
1. App\Lib2\MYCONST
2. App\Lib2\MyFunction
3. App\Lib2\MyClass::WhoAmI
命名空间别名
命名空间别名可能是最有用的构想了,别名允许我们使用较短的名称引用很长的命
名空间。
myapp3.php
1. < ?php
2.
use
App\Lib1
as
L;
3.
use
App\Lib2\MyClass
as
Obj;
4.
5. header(
'Content-type: text/plain'
);
第一个 use 语句将 App\Lib1
“
定义为 L”
“
,任何使用 L”的限定名称在编译时都会被
“
翻译成 App\Lib1”,因此我们就可以引用 L\MYCONST 和 L\MyFunction 而不是完全限
定名称了。
第二个 use
“
语句定义了 obj”作为 App\Lib2\命名空间中 MyClass 类的别名,这种
方式只适合于类,不能用于常量和函数,现在我们就可以使用 new Obj( )或象上面那样
运行静态方法了。
执行结果:
1. App\Lib1\MYCONST
2. App\Lib1\MyFunction
3. App\Lib1\MyClass::WhoAmI
4. App\Lib2\MyClass::WhoAmI
PHP 命名解析规则