[thinkPHP5项目实战_03]子命名空间及命名空间的访问方式

来源:互联网 发布:圆方软件论坛 编辑:程序博客网 时间:2024/06/08 20:04

1.子命名空间定义

PHP提供了层次化的空间命名方式,类似于一个虚拟目录,tp5会自动加载该命名空间

<?phpnamespace app1\pro1\item1;function func(){echo "func1";}const x = "name1";

2.命名空间的三种访问方式

1)非限定名称访问

访问的元素前面不包含前缀,即访问当前定义的元素。

2)限定名称访问

访问的元素包含前缀名称,简单理解使用虚拟目录的相对路径访问方式

3)完全限定名称访问

访问的元素包含全局的命名空间前缀,理解为使用虚拟目录的绝对路径访问

举例说明:

<?phpnamespace app1\pro1\item1; //命名空间前不能有有效代码header("content-type:text/html;charset=utf-8");function func(){echo "func1";}const x = "name1";class Fruit{public $a = '苹果1';static $b = '菠萝1';}namespace app2\pro2\item2\topic2;function func(){echo "func2";}const x = "name2";class Fruit{public $a = '苹果2';static $b = '菠萝2';}namespace app2\pro2;function func(){echo "func3";}const x = "name3";class Fruit{public $a = '苹果3';static $b = '菠萝3';}// 非限定名称访问,访问当前定义的元素func(); //输出“func3”echo x; //name3$fruit = new Fruit;//实例化类echo $fruit->a; //苹果3echo Fruit::$b; //菠萝3// 限定名称访问,访问当前定义元素下面的item2\topic2路径下的元素item2\topic2\func(); //输出“func2”echo item2\topic2\x; //name2$fruit = new item2\topic2\Fruit;//实例化类echo $fruit->a; //苹果2echo item2\topic2\Fruit::$b; //菠萝2//完全限定名称访问\app1\pro1\item1\func(); //输出“fun1”echo \app1\pro1\item1\x; //name1$fruit = new \app1\pro1\item1\Fruit;//实例化类echo $fruit->a; //苹果1echo \app1\pro1\item1\Fruit::$b; //菠萝1