全网整合营销服务商

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

免费咨询热线: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 自动生成模块操作示例  # 类库  # 加载  # 进阶  # 就会  # 会有  # 相关内容  # 你可以  # 只需  # 感兴趣  # 我们可以  # 采用了  # 给大家  # 较多  # 可以使用  # 要给  # 会比  # 但不  # 更多关于  # 可以利用 


相关文章: 韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?  如何在宝塔面板创建新站点?  高防服务器租用如何选择配置与防御等级?  如何通过二级域名建站提升品牌影响力?  如何高效生成建站之星成品网站源码?  网站制作软件有哪些,制图软件有哪些?  Java解压缩zip - 解压缩多个文件或文件夹实例  网站制作培训多少钱一个月,网站优化seo培训课程有哪些?  网站制作需要会哪些技术,建立一个网站要花费多少?  如何选择CMS系统实现快速建站与SEO优化?  开封网站制作公司,网络用语开封是什么意思?  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  常州企业建站如何选择最佳模板?  宝塔建站教程:一键部署配置流程与SEO优化实战指南  建站之家VIP精选网站模板与SEO优化教程整合指南  建站之星后台搭建步骤解析:模板选择与产品管理实操指南  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  如何快速生成凡客建站的专业级图册?  如何快速查询域名建站关键信息?  免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?  ,想在网上投简历,哪几个网站比较好?  模具网站制作流程,如何找模具客户?  婚礼视频制作网站,学习*后期制作的网站有哪些?  C#如何使用XPathNavigator高效查询XML  宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  网页设计网站制作软件,microsoft office哪个可以创建网页?  建站之星后台管理:高效配置与模板优化提升用户体验  网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  云南网站制作公司有哪些,云南最好的招聘网站是哪个?  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  高端建站如何打造兼具美学与转化的品牌官网?  网站专业制作公司有哪些,做一个公司网站要多少钱?  整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?  php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  制作网站外包平台,自动化接单网站有哪些?  如何通过多用户协作模板快速搭建高效企业网站?  已有域名如何免费搭建网站?  大同网页,大同瑞慈医院官网?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  制作网站的基本流程,设计网站的软件是什么?  安徽网站建设与外贸建站服务专业定制方案 

您的项目需求

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