Correction status:qualified
Teacher's comments:
作业1:用大括号语法实现在一个脚本中创建多个命名空间并访问成员
<?php /** 命名空间:解决了类,函数,常量的重名问题,而别名解决了书写路径过长的问题,提高代码效率和可读性。 */ namespace A { const NLB ='二狗'; class Animal { private $name = '哈士奇'; public function sing() { return $this->name . '在唱歌'; } } //访问B的成员 \B\Web::getAdd('www.php.cn'); echo'<hr>'; } namespace B { const SITE_NAME = 'PHP中文网'; class Web { public $name; public static function getAdd($add){ echo 'PHP中文网的地址是:'.$add; } } //访问C的成员 echo \C\add(80,100); echo'<hr>'; } namespace C { function add($a,$b){ return $a+$b; } } namespace { //访问A的成员 echo \A\NLB.'<br>'; echo (new \A\Animal())->sing(); echo'<hr>'; //访问B空间的成员 \B\Web::getAdd('www.php.cn'); echo'<hr>'; //访问C下面的成员 echo \C\add(80,100); }
点击 "运行实例" 按钮查看在线实例
作业2:使用use 导入其它脚本中的类/常量/函数,并使用别名方式访问
代码1:被包含的命名空间
<?php /** * Created by PhpStorm. * User: Core * Date: 2018/9/7 * Time: 18:09 */ //创建一个用于引入的空间 namespace One\Two\Three{ class Sum{ public function add($a,$b,$c){ return $a+=$b+$c; } } }
点击 "运行实例" 按钮查看在线实例
代码2:被包含的命名空间
<?php /** */ namespace Test{ class Sum{ public function add($a,$b){ return $a+=$b; } } }
点击 "运行实例" 按钮查看在线实例
代码3:use的使用和as别名
<?php /** 用于测试引入类和类别名 */ namespace User; include "test.php"; include "one.php"; use \One\Two\Three\Sum; use \Test\Sum as Addsum; //使用one脚本下的add 方法 这样路径太长输入麻烦 //echo (new \One\Two\Three\Sum())->add(10,20,30); //使用use 关键字,缩短路径 echo (new Sum())->add(10,30,100); //因为test中也有个类sum,重名了,使用use建立一个别名 echo (new Addsum())->add(100,300);
点击 "运行实例" 按钮查看在线实例
作业3:非限定名称,限定名称和完全限定名称的命名空间之间的区别与联系是什么?
/*
*非限定名称,限定名称和完全限定名称的命名空间之间的区别与联系是什么?
*
* 非限定名称只能用于访问 自己/当前 空间的常量,函数,类。
* 限定名称用于访问当前类的子类,下一级目录,类似:相对路径概念
* 完全限定名称:就是从根空间\开始,逐级访问空间名称,类似绝对路径;
*
*
*
*/