Eyoucms程序开发:自动加载
概述
ThinkPHP5.0
真正实现了按需加载,所有类库采用自动加载机制,并且支持类库映射和composer
类库的自动加载。
自动加载的实现由think\Loader
类库完成,自动加载规范符合PHP的PSR-4
。
自动加载
由于新版ThinkPHP
完全采用了命名空间的特性,因此只需要给类库正确定义所在的命名空间,而命名空间的路径与类库文件的目录一致,那么就可以实现类的自动加载。
类库的自动加载检测顺序如下:
1、类库映射检测;
2、PSR-4
自动加载检测;
3、PSR-0
自动加载检测;
系统会按顺序检测,一旦检测生效的话,就会自动载入对应的类库文件。
类库映射
遵循我们上面的命名空间定义规范的话,基本上可以完成类库的自动加载了,但是如果定义了较多的命名空间的话,效率会有所下降,所以,我们可以给常用的类库定义类库映射。命名类库映射相当于给类文件定义了一个别名,效率会比命名空间定位更高效,例如:
Loader::addClassMap('think\Log',LIB_PATH.'think\Log.php');
Loader::addClassMap('org\util\Array',LIB_PATH.'org\util\Array.php');
也可以利用addClassMap
方法批量导入类库映射定义,例如:
$map = [
'think\Log' => LIB_PATH.'think\Log.php',
'org\util\array'=> LIB_PATH.'org\util\Array.php'
];
Loader::addClassMap($map);
虽然通过类库映射的方式注册的类可以不强制要求对应命名空间目录,但是仍然建议遵循PSR-4规范定义类库和目录。
类库导入
如果你不需要系统的自动加载功能,又或者没有使用命名空间的话,那么也可以使用think\Loader
类的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
依赖库中的命名空间直接调用。
相关文档
- 揭秘百度点击器:自动刷点击量原理及应对验证码方法
- 试用站优云:界面复古功能全,自动优化能否给网站带来改变?
- 用了百度自动推送,是可以不用手动提交了吗
- 东莞SEO优化实战指南,从基础框架到本地化策略,如何实现排名飞跃
- DedeCMS采集教程:三天搞定网站内容自动化更新
- DedeCMS自动采集:三小时搞定三个月的内容量
- 小旋风万能蜘蛛池x8.3免权如何实现永久使用?2025最新破解教...
- 全自动站群系统真的能降80%人工成本?3大实战数据揭秘
- 北京SEO公司实测:2025未案新站如何实现3小时百度收录?附操...
- 制造业成本池设置全流程从动因分配到自动化核算
- 医疗行业网站被降权?蜘池x621城市标签系统如何实现精准权重恢复
- 2025年小旋风万能蜘蛛池ro采集如何实现搜狗秒收?【实战案例解...
- 2025年如何通过老域名和度站长工具实现域名快速收录?
- 2025年如何实现秒收录秒名?最新SEO技术全解析
- 自动SEO优化真的能让你的网站排名飙升吗?
- 中文如何自动切换英文且打包下载图标呢
- zblog插件全自动采集伪原创发布插件免费
- 如何通过“ChatGPT行程签证”轻松实现全球旅行梦想
- Zblog采集-Zblog自动采集-Zblog免登录发布插件
- pbootcms如何设置发布内容不自动提取缩略图
上一篇: Eyoucms程序开发:命名空间
下一篇: Eyoucms程序开发:Traits引入