ThinkPHP 自动加载类库


ThinkPHP 自动加载

ThinkPHP 具有自动加载文件的功能,自动加载的文件在需要的时候,系统会自动加载进来。如使用 D 方法实例化一个模型类的时候,系统会自动加载应用项目 Lib/Model 目录下对应的模型类。

如下几种情况,ThinkPHP 会自动加载:

  1. 系统核心文件,如系统基类下的 Think.Core 等文件
  2. 定义了别名的类库
  3. 当前项目的 Action 类和 Model 类
  4. 自动搜索路径下面的类库

利用 ThinkPHP 的自动加载功能,可以自动加载自己常用的类库,而无需使用 import 方法手动导入。上述四种自动加载机制中,可以利用的为第二种(定义别名)和第四种(定义自动搜索路径)。

定义类库别名自动加载

系统默认的别名定义文件位于 ThinkPHP系统目录/Common/alias.php ,为便于项目移植,可以在项目的公共文件 common.php 内添加自定义别名:

alias_import(array(
    'myClass'=>   LIB_PATH.'/Common/myClass.class.php',
    // 更多别名
    )
);

这样当我们在系统中实例化一个对象时:

$p = new myClass();

系统便会自动加载 Lib/Common/myClass.class.php ,而无需再使用 import 方法手工导入。

定义类库自动搜索路径自动加载

可以通过配置 APP_AUTOLOAD_PATH 参数(自动加载路径)来实现所需类库的自动加载。在系统默认配置文件 convention.php 中,APP_AUTOLOAD_PATH 配置如下:

'APP_AUTOLOAD_PATH' => 'Think.Util.',

因此我们在模块操作使用 Think/Util 下的工具类时,系统才会自动加载而无需额外 import 导入。如果希望再自动加载扩展类库 ORG/Util 下的文件,可以增加配置自动加载的路径:

'APP_AUTOLOAD_PATH'=> 'Think.Util.,ORG.Util.',

如果需要加载自定义的类库时,为便于项目移植,可以在项目配置文件 Config/config.php 中定义该 APP_AUTOLOAD_PATH 参数以覆盖默认配置:

'APP_AUTOLOAD_PATH' => 'Think.Util.,ORG.Util.,@.Common.',

这样,当使用到了系统 Think/Util、ORG/Util 以及当前项目 Lib/Common 下的类库时,系统便会自动加载而无需手动 import 导入。APP_AUTOLOAD_PATH 配置多个搜索路径之间用逗号分割,并且注意定义的顺序代表了搜索的顺序。

定义别名和自动搜索路径都可以实现类库的自动加载,区别是前者需要为没一个类库文件单独定义,而后者直接定义目录搜索目录下所有类文件。

需要注意的是,自动加载的类库文件命名必须是以 .class.php 为后缀的。

    ThinkPHP 类库说明
    ThinkPHP import 类库导入
    ThinkPHP 自动加载类库
    ThinkPHP vendor 方法导入第三方类库

zgguan.com(it学习网) — 提供最好的 XHTML教程DIV+CSS教程JavaScript教程PHP教程ThinkPHP教程