自动加载ThinkPHP的类库方式
2013-01-08 13:25
295 查看
最近在学习php中的经典框架ThinkPHP,这里放的是关于类方面的知识点:
自动加载
在大多数情况下,我们无需手动导入类库,而是通过配置采用自动加载机制即可,自动加载机制是真正的按需加载,可以很大程度的提高性能。自动加载有三种情况,按照加载优先级从高到低分别是:别名自动加载、系统规则自动加载和自定义路径自动加载。
一、别名自动加载
在前面我们提到了别名的定义方式,并且采用了import方法进行别名导入,其实所有定义别名的类库都无需再手动加载,系统会按需自动加载。
二、系统规则自动加载
如果你没有定义别名的话,系统会首先按照内置的规则来判断加载,系统规则仅针对行为类、模型类和控制器类,搜索规则如下:
注意:搜索的优先顺序从上至下 ,一旦找到则返回,后面规则不再检测。如果全部规则检测完成后依然没有找到类库,则开始进行第三个自定义路径自动加载检测。
三、自定义路径自动加载
当你的类库比较集中在某个目录下面,而且不想定义太多的别名导入的话,可以使用自定义路径自动加载方式,这种方式需要在项目配置文件中添加自动加载的搜索路径,例如:
'APP_AUTOLOAD_PATH' =>'@.Common,@.Tool',
表示,在当前项目类库目录下面的Common和Tool目录下面的类库可以自动加载。多个搜索路径之间用逗号分割,并且注意定义的顺序也就是自动搜索的顺序。
注意:自动搜索路径定义只能采用命名空间方式,也就是说这种方式只能自动加载项目类库目录和基类库目录下面的类库文件。
自动加载
在大多数情况下,我们无需手动导入类库,而是通过配置采用自动加载机制即可,自动加载机制是真正的按需加载,可以很大程度的提高性能。自动加载有三种情况,按照加载优先级从高到低分别是:别名自动加载、系统规则自动加载和自定义路径自动加载。
一、别名自动加载
在前面我们提到了别名的定义方式,并且采用了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目录下面的类库可以自动加载。多个搜索路径之间用逗号分割,并且注意定义的顺序也就是自动搜索的顺序。
注意:自动搜索路径定义只能采用命名空间方式,也就是说这种方式只能自动加载项目类库目录和基类库目录下面的类库文件。
相关文章推荐
- elite核心库的加载方式及自动加载类库
- 关于thinkphp5.0 rc4.0扩展类库自动与手动加载的问题
- 6410移植RT3070无线模块,WPA加密方式,并开机自动加载
- Commons-Configuration2简介、使用方式、代码范例 -- 自动重新加载配置文件、监听器、处理器、自定义检测器
- Maven------pom.xml自动加载各种类库代码
- ThinkPHP教程--17--自动加载
- thinkphp学习笔记9—自动加载
- 6410移植RT3070无线模块,WPA加密方式,并开机自动加载
- thinkphp 自动加载
- ThinkPHP composer的安装及图像处理类库加载
- thinkPHP线上自动加载异常与修复方法实例分析
- ThinkPHP 3.2.3 自动加载公共函数文件的方法
- thinkPHP5.0框架自动加载机制分析
- 4000 thinkphp 加载第三方类库
- ThinkPHP Http工具类(用于远程采集 远程下载) phpSimpleHtmlDom采集类库_Jquery筛选方式 使用phpQuery轻松采集网页内容http://www.thinkphp.cn/extend/541.html
- thinkPHP3.2.3实现自定义类的自动加载
- thinkphp3.2源码 ----- 自动加载
- PHP ThinkPHP 3.2.3 自动加载公共函数文件的方法
- ThinkPHP中函数的加载方式
- 关于Thinkphp3.2 命名空间的说明-php5.3命名空间介绍-TP自动加载