THINKPHP3.2命名空间

来源:互联网 发布:做淘宝怎么找货源 编辑:程序博客网 时间:2024/06/06 14:09
THINKPHP3.2命名空间
 3.2版本全面采用命名空间方式定义和加载类库文件,有效的解决多个模块之间的冲突问题,并且实现了更加高效的类库自动加载机制。

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

  1. namespaceOrg\Util;
  2. classFile{
  3. }

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

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

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

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

根命名空间

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

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

  1. namespaceMy;
  2. classTest{
  3. publicfunction sayHello(){
  4. echo'hello';
  5. }
  6. }

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

  1. $Test=new \My\Test();
  2. $Test->sayHello();

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

  1. namespaceHome\Model;
  2. classUserModelextends \Think\Model{
  3. }

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

  1. namespaceAdmin\Event;
  2. classUserEvent{
  3. }
其类文件位于 Application/Admin/Event/UserEvent.class.php