全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

thinkPHP5.0框架自动加载机制分析

本文实例讲述了thinkPHP5.0框架自动加载机制。分享给大家供大家参考,具体如下:

概述

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');

示例

// 引入 extends/qrcode.php
Loader::import('qrcode', EXTEND_PATH);
// 助手函数
import('qrcode', EXTEND_PATH);
// 引入 extends/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 应用类库
@ 表示当前模块类库包

如果完全遵从系统的命名空间定义的话,一般来说无需手动加载类库文件,直接实例化即可。

Composer自动加载

5.0版本支持Composer安装的类库的自动加载,你可以直接按照Composer依赖库中的命名空间直接调用。

更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》、《smarty模板入门基础教程》及《PHP模板技术总结》。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。


# thinkPHP5.0  # 自动加载  # Thinkphp5.0自动生成模块及目录的方法详解  # ThinkPHP中的三大自动简介  # ThinkPHP3.1新特性之动态设置自动完成和自动验证示例  # thinkphp在模型中自动完成session赋值示例代码  # thinkPHP自动验证、自动添加及表单错误问题分析  # ThinkPHP中create()方法自动验证表单信息  # thinkPHP框架自动填充原理与用法分析  # thinkPHP线上自动加载异常与修复方法实例分析  # ThinkPHP5.0框架使用build 自动生成模块操作示例  # 类库  # 加载  # 进阶  # 就会  # 会有  # 相关内容  # 你可以  # 只需  # 感兴趣  # 我们可以  # 采用了  # 给大家  # 较多  # 可以使用  # 要给  # 会比  # 但不  # 更多关于  # 可以利用 


相关文章: 创业网站制作流程,创业网站可靠吗?  网站制作企业,网站的banner和导航栏是指什么?  已有域名如何免费搭建网站?  山东网站制作公司有哪些,山东大源集团官网?  ,怎么用自己头像做动态表情包?  如何撰写建站申请书?关键要点有哪些?  建站主机是什么?如何选择适合的建站主机?  如何正确下载安装西数主机建站助手?  制作农业网站的软件,比较好的农业网站推荐一下?  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  C#怎么创建控制台应用 C# Console App项目创建方法  高端云建站费用究竟需要多少预算?  网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?  css网站制作参考文献有哪些,易聊怎么注册?  上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?  如何快速启动建站代理加盟业务?  c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】  建站之星安装提示数据库无法连接如何解决?  如何快速查询网址的建站时间与历史轨迹?  如何基于云服务器快速搭建个人网站?  孙琪峥织梦建站教程如何优化数据库安全?  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  外贸公司网站制作哪家好,maersk船公司官网?  巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成  浅谈Javascript中的Label语句  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  详解jQuery停止动画——stop()方法的使用  如何在橙子建站上传落地页?操作指南详解  建站主机默认首页配置指南:核心功能与访问路径优化  常州自助建站工具推荐:低成本搭建与模板选择技巧  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  如何配置WinSCP新建站点的密钥验证步骤?  如何在香港服务器上快速搭建免备案网站?  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  ,sp开头的版面叫什么?  php条件判断怎么写_ifelse和switchcase的使用区别【对比】  简历在线制作网站免费,免费下载个人简历的网站是哪些?  如何通过多用户协作模板快速搭建高效企业网站?  常州企业建站如何选择最佳模板?  如何在云虚拟主机上快速搭建个人网站?  建站之星免费模板:自助建站系统与智能响应式一键生成  武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?  建站上市公司网站建设方案与SEO优化服务定制指南  制作网页的网站有哪些,电脑上怎么做网页?  台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  香港服务器建站指南:免备案优势与SEO优化技巧全解析  广德云建站网站建设方案与建站流程优化指南  免费公司网站制作软件,如何申请免费主页空间做自己的网站?  建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。