ThinkPHP3.0完全开发手册
在大多数情况下,我们无需手动导入类库,而是通过配置采用自动加载机制即可,自动加载机制是真正的按需加载,可以很大程度的提高性能。自动加载有三种情况,按照加载优先级从高到低分别是:别名自动加载、系统规则自动加载和自定义路径自动加载。
一、别名自动加载
在前面我们提到了别名的定义方式,并且采用了import方法进行别名导入,其实所有定义别名的类库都无需再手动加载,系统会按需自动加载。
二、系统规则自动加载
如果你没有定义别名的话,系统会首先按照内置的规则来判断加载,系统规则仅针对行为类、模型类和控制器类,搜索规则如下:
行为类 |
规则1 |
搜索系统类库目录下面的Behavior目录 |
规则2 |
搜索系统扩展目录下面的Behavior目录 |
|
规则3 |
搜索应用类库目录下面的Behavior目录 |
|
规则4 |
如果启用了模式扩展,则搜索模式扩展目录下面的Behavior目录 |
|
模型类 |
规则1 |
搜索应用类库目录下面的Model目录 |
规则2 |
搜索系统扩展目录下面的Model目录 |
|
控制器类 |
规则1 |
如果启用分组,则搜索应用类库目录的Action/当前分组 目录 |
规则2 |
搜索项目类库目录下面的Action目录 |
|
|
规则3 |
搜索系统扩展目录下面的Action目录 |
注意:搜索的优先顺序从上至下 ,一旦找到则返回,后面规则不再检测。如果全部规则检测完成后依然没有找到类库,则开始进行第三个自定义路径自动加载检测。
三、自定义路径自动加载
当你的类库比较集中在某个目录下面,而且不想定义太多的别名导入的话,可以使用自定义路径自动加载方式,这种方式需要在项目配置文件中添加自动加载的搜索路径,例如:
'APP_AUTOLOAD_PATH' =>'@.Common,@.Tool',
表示,在当前项目类库目录下面的Common和Tool目录下面的类库可以自动加载。多个搜索路径之间用逗号分割,并且注意定义的顺序也就是自动搜索的顺序。
注意:自动搜索路径定义只能采用命名空间方式,也就是说这种方式只能自动加载项目类库目录和基类库目录下面的类库文件。