Correction status:qualified
Teacher's comments:
1用大括号语法实现在一个脚本中创建多个命名空间并访问成员
<?php namespace Demo1 { const APP_NAME = 'PHP'; class Goods { public $name = '苹果'; public static function eat($name= '') { return $name.'可以吃'; } } echo APP_NAME,'<br>'; echo (new Goods)->name,'<br>'; echo Goods::eat('苹果'),'<hr>'; } namespace Demo2\Demo3 { const NameSpances = '我是Demo2下的Demo3空间'; } namespace Demo2 { const APP_NAME = 'HTML'; class Goods { public $name = '香蕉'; public static function eat($name = '') { return $name.'可以吃'; } } echo APP_NAME,'<br>'; echo (new Goods)->name,'<br>'; echo Goods::eat('葡萄'),'<hr>'; echo Demo3\NameSpances; }
点击 "运行实例" 按钮查看在线实例
2.使用use 导入其它脚本中的类/常量/函数,并使用别名方式访问
<?php //这是demo1文件 namespace Demo1; const APP_NAME = 'PHP'; class Goods { public $name = '苹果'; public static function eat($name= '') { return $name.'可以吃'; } } function what() { return '这是Demo1命名空间下的函数'; }
点击 "运行实例" 按钮查看在线实例
<?php //这是demo2文件 namespace Model; require 'demo1.php'; use Demo1\Goods as ClassName; use const Demo1\APP_NAME as NAME; use function Demo1\what as func; class Test1 { public static function test() { return __METHOD__; } } echo Test1::test(),'<hr>'; echo ClassName::eat('西瓜'),'<hr>'; echo NAME,'<hr>'; echo func();
点击 "运行实例" 按钮查看在线实例
3.非限定名称,限定名称和完全限定名称的命名空间之间的区别与联系是什么?
这三者给我的感觉就像 相对路径与绝对路径 这样;
非限定名称:或不包含前缀的类名称,就是名称本身;
限定名称:或包含前缀的名称,名称本身前要加上前缀;
完全限定:或包含了全局前缀操作符的名称,就是从根全局开始写的名称