PHP别名/导入名称空间
介绍
命名空间的重要功能是能够使用别名引用外部完全限定名称或进行导入。PHP命名空间支持以下几种别名或导入-
给类名起别名,
为接口名称起别名,
给命名空间名称起别名
别名或导入函数和常量名称。
在PHP中,别名是通过use运算符完成的。
使用运算符
示例
#test1.php <?php namespace mynamespace; function sayhello(){ echo "Hello from mynamespace\n"; } sayhello(); namespace mynewspace; function sayhello(){ echo "Hello from my new space\n"; } sayhello(); use \mynewspace\sayhello as hello; ?>
输出结果
Hello from mynamespace Hello from my new space
多种使用陈述相结合
示例
<?php namespace mynamespace; class myclass{ function test() { echo "myclass in mynamespace\n"; } } class testclass{ static function test() { echo "testclass in mynamespace\n"; } } use \mynamespace\myclass as myclass, \mynamespace\testclass; $a=new myclass(); $a->test(); $b=new \mynamespace\testclass(); $b->test(); ?>
输出结果
myclass in mynamespace testclass in mynamespace
导入和动态名称
动态替换导入类的名称
示例
<?php namespace mynamespace; class myclass{ function test() { echo "myclass in mynamespace\n"; } } class testclass{ static function test() { echo "testclass in mynamespace\n"; } } use \mynamespace\myclass as myclass; $a=new myclass; $b='myclass'; $c=new $b; ?>
use关键字必须在最外部或全局范围内或在命名空间声明内声明。导入过程在编译时而不是在运行时完成。因此,不能对它进行块作用域限定。以下使用将是非法的
示例
<?php function myfunction(){ use myspace\myclass; // // } ?>
包含的文件不会继承父文件的导入规则,因为它们是基于每个文件的