1.同一个页面存在多个命名空间之间的访问
实例
<?php namespace A{ header("content-type:text/html;charset=utf-8"); function a(){ echo '我是a'; } \B\B::a();//访问B空间的B类中的a方法 \C\C::a();//访问C空间的C类中的a方法 } namespace B{ class B { public static function a() { echo '我是b'; } } \A\a();//访问A空间的a方法 \c\C::a();//命名空间大小写不敏感,访问C空间的C类中的a方法 } namespace C{ class C { public static function a() { echo '我是c'; } } \A\a(); //访问A空间的a方法 \B\B::a();//访问B空间的B类中的a方法 \C\C::a(); //完全限定名称 C::a();//非限定名称 D\D::a();//限定名称 } namespace C\D{ class D { public static function a() { echo '我是d'; } } } /*代码如上c空间-----命名空间中的完全限定名称,非限定名称和限定名称的区别是:在本空间中使用的变量或者方法、类 在解析路径的时候前面是当前空间的前缀,无需加前缀称为非限定名称如,如果从顶层命名空间找开始限定 名称则为完全限定名称,如果在本空间调用下一级空间中的变量或者方法、类,可以不用从顶级空间开始限定, 此时便是限定名称。这个和目录有点像,完全限定名称就好比绝对路径,限定名称就好比相对路径,非限定名称 就好比本文件中变量或者方法、类的路径*/ ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
2.不在一个页面命名空间的使用
(1).index.php
实例
<?php namespace one; //命名空间:作用防止用户自定义类与系统类重名,或者与其他版块的类同名 /*存在命名空间,第一个必须写在最顶端,不然会报错, 下面再有命名空间可以不用写最顶端,命名空间的名称不分大小写。 如果没有命名空间的话,默认在顶级空间里,如果存在命名空间, 不光需要导入文件,而且要导入类,use 的作用给命名空间起个别名*/ header("content-type:text/html;charset=utf-8"); require '2.php'; use \two\two1;//引入的空间类取别名 如果没有as,就会取当前类名two1作为别名 class one{ public function __construct() { echo '我是one'; } } new one; echo '<br>'; new \two\two;//实例two类 echo '<br>'; $two1 = new two1;//实例two1类 echo two1::two1_test();//访问two1中静态方法 echo '<br>'; echo two1::FIT;//访问two1中常量 echo '<br>'; echo $two1->test();//访问two1中方法 echo '<br>'; ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
(2).2.php
实例
<?php namespace two; header("content-type:text/html;charset=utf-8"); class two { public function __construct() { echo '我是two'; } } class two1 { const FIT = 'www.12306.net'; public static function two1_test() { return __METHOD__; } public function test() { return __METHOD__; } } ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例