1、编程: 用大括号语法实现在一个脚本中创建多个命名空间并访问成员
<?php //声明命名空间 //namespace1 namespace one{ class Demo{ public $name = 'Lao Fashi'; } const SITE = 'CRRC'; function add($a, $b){return $a+$b; } } //namespace2 namespace Two{ class Demo { public $name = 'Shi Laoshi'; } const SITE = 'TEG'; function add($a, $b) { return $a + $b; } } //namespace3 namespace Three{ echo (new \Two\Demo)->name, '<br>'; echo 'Namespace is ', __NAMESPACE__, '<br>'; //访问其他空间 echo (new \one\Demo)->name, '<br>'; }
点击 "运行实例" 按钮查看在线实例
2、编程:使用use 导入其它脚本中的类/常量/函数,并使用别名方式访问
<?php //声明命名空间one namespace one; require 'two/three/demo.php'; use one\two\three\Demo as DemoOthers; class Demo{ public $name='Mr Shi'; const SITE='www.amtb.cn'; function add($x,$y){return $x+$y;} } echo (new DemoOthers)->name;
点击 "运行实例" 按钮查看在线实例
3、问答: 非限定名称,限定名称和完全限定名称的命名空间之间的区别与联系是什么?
(1)非限定名称:类似当前目录下访问,当前空间内访问不需要添加空间前缀;
(2)限定名称: 类似于相对路径访问,two\Demo 会自动加上当前空间前缀:one,最终解析为: one\two\Demo;
(3)完全限定名称:从全局空间开始,类似于从根目录开始,从当前的\one\two\开始,访问另一个空间的成员,要从根开始。