PHP命名空间导入、别名

魔术常量__NAMESPACE__返回当前命名空间的名称,如果是在全局范围中则返回空字符串。关键字namespace除了可以定义命名空间,还可以用来访问当前命名空间或子命名空间中的元素。

为了编码方便,PHP允许使用use关键字导入外部的完全限定名称,并可选择使用as关键字为其创建别名。PHP5.3起,可以导入类、接口或命名空间并创建别名,PHP5.6起,增加了对函数和常量的导入和别名的创建。

use语句中的命名空间总是按完全限定名来解析的。为了简化操作,同种类别的导入,可以用一个use关键字后面可以跟多个语句,语句之间用逗号分隔。不能对全局命名空间设置别名。

同一个文件的同一命名空间中,导入的类、函数与常量的别名不能与当前命名空间中存在。

<?php
namespace a\b {
	//a.php
    class A{
        function __construct(){
            echo "A in ".__NAMESPACE__;
        }
    }
    class B{
        function __construct(){
            echo "B in ".__NAMESPACE__;
        }
    }
	
	function foo(){
		echo "foo in ".__NAMESPACE__;
	}
}
?>
<?php
namespace a\c {
	//b.php
    class B{
        function __construct(){
            echo "B in ".__NAMESPACE__;
        }
    }
	function f(){
		echo "foo in ".__NAMESPACE__;
	}
}
?>
<?php 
namespace a\c{
	//c.php
    include 'a.php';
	include 'b.php';
   
    use a\b\A as B,a\b\B as C;
    use function a\b\foo as f;
	
	f();//调用的是a\b\foo
	namespace\f();//调用的是a\c\f
	var_dump(new B());//创建的是a\b\A的对象
    var_dump(new namespace\B());//创建的是a\c\B的对象
    var_dump(new C());//创建的是a\b\B的对象
}
?>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值