栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP > php开源框架 > thinkphp

自动加载 - ThinkPHP5.0完全开发手册

thinkphp 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

自动加载 - ThinkPHP5.0完全开发手册

## 概述 `ThinkPHP5.0`真正实现了按需加载,所有类库采用自动加载机制,并且支持类库映射和`composer`类库的自动加载。 自动加载的实现由`thinkLoader`类库完成,自动加载规范符合PHP的`PSR-4`。 ## 自动加载 由于新版`ThinkPHP`完全采用了命名空间的特性,因此只需要给类库正确定义所在的命名空间,而命名空间的路径与类库文件的目录一致,那么就可以实现类的自动加载。 类库的自动加载检测顺序如下: 1、类库映射检测; 2、`PSR-4`自动加载检测; 3、`PSR-0`自动加载检测; 系统会按顺序检测,一旦检测生效的话,就会自动载入对应的类库文件。 ## 类库映射 遵循我们上面的命名空间定义规范的话,基本上可以完成类库的自动加载了,但是如果定义了较多的命名空间的话,效率会有所下降,所以,我们可以给常用的类库定义类库映射。命名类库映射相当于给类文件定义了一个别名,效率会比命名空间定位更高效,例如: ~~~ Loader::addClassMap('thinkLog',LIB_PATH.'thinkLog.php'); Loader::addClassMap('orgutilArray',LIB_PATH.'orgutilArray.php'); ~~~ 也可以利用`addClassMap`方法批量导入类库映射定义,例如: ~~~ $map = [ 'thinkLog' => LIB_PATH.'thinkLog.php', 'orgutilarray'=> LIB_PATH.'orgutilArray.php' ]; Loader::addClassMap($map); ~~~ > 虽然通过类库映射的方式注册的类可以不强制要求对应命名空间目录,但是仍然建议遵循PSR-4规范定义类库和目录。 ## 类库导入 如果你不需要系统的自动加载功能,又或者没有使用命名空间的话,那么也可以使用`thinkLoader`类的`import`方法手动加载类库文件,例如: ~~~ Loader::import('org.util.array'); Loader::import('@.util.upload'); ~~~ 示例 ~~~ // 引入 extend/qrcode.php Loader::import('qrcode', EXTEND_PATH); // 助手函数 import('qrcode', EXTEND_PATH); // 引入 extend/wechat-sdk/wechat.class.php Loader::import('wechat-sdk.wechat', EXTEND_PATH, '.class.php'); // 助手函数 import('wechat-sdk.wechat', EXTEND_PATH, '.class.php'); ~~~ 类库导入也采用类似命名空间的概念(但不需要实际的命名空间支持),支持的“根命名空间”包括: |目录|说明| |---|---| |behavior| 系统行为类库| |think| 核心基类库| |traits| 系统Traits类库| |app| 应用类库| |@| 表示当前模块类库包| 如果完全遵从系统的命名空间定义的话,一般来说无需手动加载类库文件,直接实例化即可。 `ThinkPHP5.0`不推荐使用`import`方法。 ## Composer自动加载 5.0版本支持`Composer`安装的类库的自动加载,你可以直接按照`Composer`依赖库中的命名空间直接调用。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/213412.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号