批改状态:合格
老师批语:
什么是命名空间?从广义上来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。
例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色。具体举个例子,文件foo.txt 可以同时在目录
/home/greg 和
/home/other
中存在,但在同一个目录中不能存在两个 foo.txt 文件。另外,在目录 /home/greg 外访问 foo.txt 文件时,我们必须将目录名以及目录分隔符放在文件名之前得到 /home/greg/foo.txt。这个原理应用到程序设计领域就是命名空间的概念。
命名空间,即将代码划分成不同空间,不同空间的类名相互独立,互不冲突。一个php文件中可以存在多个命名空间,第一个命名空间前不能有任何代码(否则会报错)。内容空间声明后的代码便属于这个命名空间,例如:
Class类:
<?php
/**
* Created by PhpStorm.
* User: John
* Date: 2018/5/9
* Time: 15:41
*/
namespace dome1{
class animal
{
//添加属性
public $type='猫';
//添加方法
function action()
{
return $this->type.'上树';
}
}
}
namespace dome2{
class animal
{
public $type='狗';
function action()
{
return $this->type.'食屎';
}
}
}PHP脚本:
<?php
/**
* Created by PhpStorm.
* User: John
* Date: 2018/5/9
* Time: 15:48
*/
namespace dome1{
class animal
{
//添加属性
public $type='猫';
//添加方法
function action()
{
return $this->type.'上树';
}
}
}
namespace cat1{
use dome1\animal as cat; //引入命名空间并使用 as 取别名
class dome
{
function execute()
{
//实例化 animal 命名空间中的第一个类
$cat = new cat();
return $cat->action();
}
}
}
namespace catTest {
//使用 use 引入命名空间,并使用另外代替
use \cat1\dome as cat;
$d = new cat();
//调用输出引入的类的方法
echo $d->execute();
}测试:
通过引入外部类中的命名空间需要先将其引入,即:require_once 'class/animal.php'; 否则会出现找不到 animal() 的情况
<?php /** * Created by PhpStorm. * User: John * Date: 2018/5/9 * Time: 15:58 */ //通过 require_once 引入其它类中的命名空间中的类进行输出 require_once 'class/animal.php'; //创建狗对象并调用其方法输出 $d = new dome2\animal(); echo $d->action();
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号