konakona
[原创]深入研究PHP的类和对象(class object)之命名空间(namespace)
[原创]深入研究PHP的类和对象(class object)之命名空间(namespace)

 我们通过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();     //显示当前的命名空间
赞赏
首页      程序开发      PHP      [原创]深入研究PHP的类和对象(class object)之命名空间(namespace)
https://secure.gravatar.com/avatar/3b712b34a0e1b689cfb524c9c6bcdc47?s=256&r=g

团哥

文章作者

继续玩我的CODE,让别人说去。 低调,就是这么自信。

发表评论

textsms
account_circle
email

konakona

[原创]深入研究PHP的类和对象(class object)之命名空间(namespace)
 我们通过require_once()等语句实现类似java引入其他package(类包)的操作。   但是这会存在一个很大的问题,例如类名重复,因此我们需要命名空间,PHP5.3开始就支持namspace声明了…
扫描二维码继续阅读
2012-08-08