我们通过require_once()等语句实现类似java引入其他package(类包)的操作。
但是这会存在一个很大的问题,例如类名重复,因此我们需要命名空间,PHP5.3开始就支持namspace声明了。
适用于PHP5.3以下版本的命名规范
但我们仍然可以通过文件命名规则来解决这个问题,例如php文件的目录是:Lib/ORM/Util/Price.class.php 这个类名(Price)是常用的名字,很可能会引发报错。
这时我们可以用命名规则来约束它 ,文件名 “Lib_ORM_Util_Price.class.php”。
但是这样的命名是很糟糕的,项目越大,所需的子目录越深,更离谱的命名都有。
PHP5.3开始支持namespace声明语句
namespace关键字必须放在PHP脚本最开始处,这点跟header()类似。
1.php
namespace Util\business; //定义多层命名空间,分割符必须是反斜杠“\”
class User{
public function showSpace(){
echo __NAMESPACE__; //常量__ NAMESPACE__的值是包含当前命名空间名称的字符串。
}
}
这个命名空间的组织结构你可以理解为Util功能包下的business作用域中的User类。
如何调用?
2.php
require_once(‘1.php’);
use Util\business as b; //有的时候命名空间过长,我们可以使用use关键字重命名它
$buser = new b\User(); //同样,使用的时候依然是用反斜杠
$buser->showSpace(); //显示当前的命名空间
发表回复