ThinkPHP 自动加载
ThinkPHP 具有自动加载文件的功能,自动加载的文件在需要的时候,系统会自动加载进来。如使用 D
方法实例化一个模型类的时候,系统会自动加载应用项目 Lib/Model 目录下对应的模型类。
如下几种情况,ThinkPHP
会自动加载:
系统核心文件,如系统基类下的 Think.Core 等文件
定义了别名的类库
当前项目的 Action 类和 Model
类
自动搜索路径下面的类库
利用 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 为后缀的。