background image

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 命名解析规则