1、用大括号语法实现在一个脚本中创建多个命名空间并访问成员:
实例
<?php namespace a{ const NAME = '天弘'; class Db{ public static function hello(){ return '欢迎你,来到编程世界'; } } function demo(){ return __METHOD__; } } namespace b\c{ class Db{ public static function hello(){ return '欢迎你,恭喜来到精彩的编程世界'; } } } namespace b{ const NAME = '天天'; class Db{ public static function hello(){ return '欢迎你天弘,恭喜来到精彩的编程世界'; } } function demo(){ return __METHOD__; } // 访问的是 b命名空间的Db类hello方法 echo Db::hello(),'<hr>'; // 访问的是 a命名空间的demo方法 echo \a\demo(),'<hr>'; // 访问的是 a命名空间的子命名空间hello方法 echo c\Db::hello(); }
运行实例 »
点击 "运行实例" 按钮查看在线实例
2、使用use 导入其它脚本中的类/常量/函数,并使用别名方式访问:
demo.php文件:
实例
<?php namespace a;//命名空间 require 'demo1.php'; use b\c\e as he; // 导入命名空间,并且起个别名 // 访问b的命名空间的demo方法,由于起个别名所以直接使用别名加\访问 echo he\demo(),'<hr>'; echo he\Db::hello(),'<hr>'; echo he\NAME,'<hr>';
运行实例 »
点击 "运行实例" 按钮查看在线实例
demo1.php文件:
实例
<?php namespace b\c\e; // 命名空间 const NAME = '天天'; class Db{ public static function hello(){ return '欢迎你天弘,恭喜来到精彩的编程世界'; } } function demo(){ return __METHOD__; }
运行实例 »
点击 "运行实例" 按钮查看在线实例
3、非限定名称,限定名称和完全限定名称的命名空间之间的区别与联系是什么?
实例
<?php namespace a{ const NAME = '天弘'; class Db{ public static function hello(){ return '欢迎你,来到编程世界'; } } function demo(){ return __METHOD__; } } namespace b\c{ class Db{ public static function hello(){ return '欢迎你,恭喜来到精彩的编程世界'; } } } namespace b{ const NAME = '天天'; class Db{ public static function hello(){ return '欢迎你天弘,恭喜来到精彩的编程世界'; } } function demo(){ return __METHOD__; } // 访问的是 b命名空间的Db类hello方法 echo Db::hello(),'<hr>'; // 非限定名称,不用带有\可以直接访问当前的hello方法 // 访问的是 a命名空间的demo方法 echo \a\demo(),'<hr>'; // 完全限定名称,带有\,返回根目录选择a目录中的demo方法 // 访问的是 a命名空间的子命名空间hello方法 echo c\Db::hello();// 限定名称,带有\ ,返回父级的目录选择c中hello方法 }
运行实例 »
点击 "运行实例" 按钮查看在线实例