热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php自定义执行流程,ThinkPHP之配置源码执行流程

本文主要针对Config的源码进行简单的执行解析,从图解到代码希望你有更深的理解。上文提到的yaconf就是在这里体现的,每一篇文章都是为了给后边做铺垫

本文主要针对Config的源码进行简单的执行解析,从图解到代码希望你有更深的理解。上文提到的yaconf就是在这里体现的,每一篇文章都是为了给后边做铺垫。

六、Config源码执行流程

虽说上面的Yaconf对于config的源码解析没有多大的帮助,但是也是在扩宽一下思路,以后在工作中可以尝试使用Yaconf。

进入正题,想知道Config是怎么进行加载解析的,先来画一个图。一起看一下加载config的执行流程。4dd33b987eb5d787716ae69fdb42e02f.png

回到public/index.php,在上一期说了类的自动加载是在加载base.php文件的过程中执行的。

那么config的加载是在下图框起来的这里,这里涉及到了容器,会有一个单独的专题来对容器进行剖析。

这里就不过多说明了,这段代码回去执行`D:\phpstudy_pro\WWW\ThinkPHPSourceCodeAnalysis\thinkphp\library\think\App.php这个文件的run方法。

1797947ecc32333a105cb6deffaaf178.png并且在run方法中需要追踪的是initialize应用初始化这个函数

971b8d18aca4b1e630923f26fb304aeb.png接着在initialize这个方法中就会看到配置文件的蛛丝马迹,随之而来就是一个初始化应用init

8583d106bef4678dac7ea05eb8d975f4.png直到走到init方法中,才算是进入了主题。

开始了自动加载配置文件,并且还调用了config类中的load方法,也是需要一起阅读的。

49c33a01a04f2be7c98ed25daccfc12e.png来到这里之后需要简单的进行解读一下

这段代码会直接走到elseif中,因为在app目录下没有设置config目录

并且这里有个configPath这个属性熟悉吧!这个值最终就是D:\phpstudy_pro\WWW\ThinkPHPSourceCodeAnalysis\config\4d1ee5a1f6b40428091a9fdc8e54f8a1.png

在接这就是把config目录下的文件全部拿出来。

传递给config类的load方法

在这里有几个知识点提一下,就当回顾了scandir :以升序的方式返回一个目录下的所有文件,还有第二个参数1,表示降序的方式返回一个目录下的所有文件。

pathinfo:以数组的形式返回文件信息,分别为目录名、文件名、扩展名,其中的几个参数代码中有提到,可以看下图即可。

在这段代码中有一个属性configExt,这个值是在环境变量读出来的,给的值是php66ff765bf1c80e3e517003ce705a6146.png坚持学习、坚持写博、坚持分享是咔咔从业以来一直所秉持的信念。希望在偌大互联网中咔咔的文章能带给你一丝丝帮助。我是咔咔,下期见。



推荐阅读
author-avatar
作祟椰
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有