作业1:用大括号语法实现在一个脚本中创建多个命名空间并访问成员
实例
/**
命名空间:解决了类,函数,常量的重名问题,而别名解决了书写路径过长的问题,提高代码效率和可读性。
*/
namespace A {
const NLB ='二狗';
class Animal
{
private $name = '哈士奇';
public function sing()
{
return $this->name . '在唱歌';
}
}
//访问B的成员
\B\Web::getAdd('www.php.cn');
echo'
';
}
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'
';
}
namespace C {
function add($a,$b){
return $a+$b;
}
}
namespace {
//访问A的成员
echo \A\NLB.'
';
echo (new \A\Animal())->sing();
echo'
';
//访问B空间的成员
\B\Web::getAdd('www.php.cn');
echo'
';
//访问C下面的成员
echo \C\add(80,100);
}
运行实例 »
点击 "运行实例" 按钮查看在线实例
作业2:使用use 导入其它脚本中的类/常量/函数,并使用别名方式访问
代码1:被包含的命名空间
实例
/**
* 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:被包含的命名空间
实例
/**
*/
namespace Test{
class Sum{
public function add($a,$b){
return $a+=$b;
}
}
}
运行实例 »
点击 "运行实例" 按钮查看在线实例
代码3:use的使用和as别名
实例
/**
用于测试引入类和类别名
*/
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:非限定名称,限定名称和完全限定名称的命名空间之间的区别与联系是什么?
/*
*非限定名称,限定名称和完全限定名称的命名空间之间的区别与联系是什么?
*
* 非限定名称只能用于访问 自己/当前 空间的常量,函数,类。
* 限定名称用于访问当前类的子类,下一级目录,类似:相对路径概念
* 完全限定名称:就是从根空间\开始,逐级访问空间名称,类似绝对路径;
*
*
*
*/