如下几种情况,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 为后缀的。