Correction status:qualified
Teacher's comments:
用{}实现命名空间
<?php //不建议一个文件中创建多个命名空间 //也可用{}大括号,使用{}时可以定义全局空间 namespace One { const NAME = 'PHP中文网'; class Db { public static function demo() { return __METHOD__; } } function hello() { return 'say hello'; } //print_r(NAME);全局下的函数 //重新定义print_r()函数 function print_r($value) { echo $value; } //使用自己定义的print_r()函数 print_r('你好'); //使用全局下的print()函数 \print_r('你好'); } namespace Two { const NAME = 'PHP.cn'; class Db { public function demo() { return __METHOD__; } } function hello() { return 'say hello world'; } } //全局空间 namespace { const NAME = 'www.php.cn'; //在全局空间下访问One中的NAME echo \One\NAME; }
点击 "运行实例" 按钮查看在线实例
导入其他的命名空间
<?php //use引入namesapce //为命名空间起别名 namespace test2; require 'test.php'; use test\Test as TestAlias; //导入类,并为类起别名 use test1\test1\test1 as test1; //为命名空间起别名 class Test { public static function test() { return __METHOD__; } } echo Test::test().'<br>'; echo TestAlias::test().'<br>'; echo test1\Test::test().'<br>';
点击 "运行实例" 按钮查看在线实例
限定名称、非限定名称、完全限定名称
<?php //不建议一个文件中创建多个命名空间 //也可用{}大括号,使用{}时可以定义全局空间 namespace One { const NAME = 'PHP中文网'; class Db { public static function demo() { return __METHOD__; } } function hello() { return 'say hello'; } } //自命名空间,放在前面 namespace Two\Three { const NAME = 'www.PHP.cn'; class Db { public function demo() { return __METHOD__; } } function hello() { return 'say hello world'; } echo __NAMESPACE__.'<hr>'; } namespace Two { const NAME = 'PHP.cn'; class Db { public function demo() { return __METHOD__; } } function hello() { return '你好'; } echo NAME.'<br>'; //非限定名称,没有前缀,类似当前文件 echo Three\NAME.'<br>'; //限定名称,有前缀,使用命名空间前缀 echo \One\NAME.'<hr>'; //完全限定名称,使用\目录开始查找 echo __NAMESPACE__.'<hr>'; //魔术常量,输出当前命名空间 echo namespace\hello().'<br>'; //namespace类似self echo namespace \Three\hello(); }
点击 "运行实例" 按钮查看在线实例