您的位置:首页 > 编程语言 > PHP开发

THINKPHP3.2命名空间

2017-09-14 11:41 429 查看
THINKPHP3.2命名空间

 3.2版本全面采用命名空间方式定义和加载类库文件,有效的解决多个模块之间的冲突问题,并且实现了更加高效的类库自动加载机制。

由于新版完全采用了命名空间的特性,因此只需要给类库正确定义所在的命名空间,而命名空间的路径与类库文件的目录一致,那么就可以实现类的自动加载。 例如,
Org\Util\File
类的定义为:

namespace
Org\Util;


class
File
{


}


其所在的路径是 
ThinkPHP/Library/Org/Util/File.class.php
,因此,如果我们实例化该类的话:

$class
=
new \Org\Util\File();


系统会自动加载 
ThinkPHP/Library/Org/Util/File.class.php
 文件。

注意:和3.1不同,我们无需在实例化命名空间定义的类之前导入类库文件了。


根命名空间

根命名空间是一个关键的概念,以上面的
Org\Util\File
类为例,
Org
就是一个根命名空间,其对应的初始命名空间目录就是系统的类库目录(
ThinkPHP/Library
),Library目录下面的子目录会自动识别为根命名空间,这些命名空间无需注册即可使用。

例如,我们在Library目录下面新增一个My根命名空间目录,然后定义一个Test类如下:

namespace
My;


class
Test
{


public
function sayHello(){


echo
'hello';


}


}


Test类保存在 
ThinkPHP/Library/My/Test.class.php
,我们就可以直接实例化和调用:

$Test
=
new \My\Test();


$Test->sayHello();


模块中的类库命名空间的根都是以模块名命名,例如:

namespace
Home\Model;


class
UserModel
extends \Think\Model
{


}


其类文件位于 
Application/Home/Model/UserModel.class.php


namespace
Admin\Event;


class
UserEvent
{


}

其类文件位于 
Application/Admin/Event/UserEvent.class.php
。 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  thinkphp 命名空间