ThinkPHP你必须要掌握的配置加载(4)

简介: ThinkPHP你必须要掌握的配置加载

七、工厂模式加载其它类型的配置文件

在之前看到的loadFile方法中,文件类型为PHP或者yaml程序就打断了,就不会在去执行后边的pares方法。


那么这个parse方法是做什么的呢!


image.png


进入到paras这个方法后,首先看注释


随后使用了一个工厂模式去加载think/config/driver下的文件


image.png


进入到factory这个方法后,这块内容属于容器的就不过多解释了。


只需要知道这里最终会返回一个实例给paras方法的$object变量


image.png


最终还是使用在上文中提到的set方法,而内部的object->parse()就是执行返回对象的内部方法,例如下图展示三个类型。ini、json、xm三个类型都存在同样的方法


image.png


这是ini类型,其它俩个的类型也是一毛一样的,就是会有同样的方法来实现对应的功能


image.png


简单梳理一下工厂模式加载不同类型的配置


  • 把对应的类型传给一个方法
  • 然后这个方法返回对应的实例
  • 在用这个实例去调用类里边的方法
  • 所有实例里的方法名都是一致的

这里咔咔后期会单独出一篇文章模仿这个实现另一个功能,导图会有所有的文章链接哦!


在ini.php中看到了一个方法parse_ini_file,其实这个方法根据之前的学习就大概能了解到时把ini类型的配置文件转为数组形式。这里就不做演示了,很是简单哈!


那么其它俩种类型都是为了把文件数据转为数组的。


八、yaml初体验

yaml就是一个类似于xml、json数据通信方式,但是yaml是以数据为中心,而非标记语言为重点。


这里提到yaml是因为在框架源码中提到了这个,后边的流程也是需要走yaml,所以还是需要简单的了解一下哈!


安装yaml,直接到pcel里搜索yaml,下载对应的版本即可。下载方式跟之前yaconf安装一样的。


安装成功后就会在PHP中存在这个扩展。


这里需要注意的是需要在php.ini中把yaml扩展文件加进去哈!


如果不会就去Yaconf在window上安装那一栏去看是怎么安装的,安装那个流程就可以了。


image.png


安装完成后就是简单的使用了,在config中新建一个kaka.yaml文件。


并且写上如下的内容,切记在yaml中冒号后边需要空一格,yaml写法就不过多说了,毕竟平时不怎么用。


这里说明只是为了阅读框架代码而做的工作。


image.png


测试yaml数据读取


读取出来的数据就是一个数组,也就是说把yaml格式的数据转化为数组形式。


image.png

这个方法是从哪里知道的呢!


还记得在config类下loadFile方法中,根据文件扩展的不同加载不同形式的方法。


PHP类型的直接就走了set,yaml类型的把数据处理为数组后执行set方法


如果是其它类型的话就会在上边说的工厂模式返回对应类名的实例,并执行对应类里边的方法将格式都转化为数组形式。最终还是使用set方法


image.png


其它类型的配置文件最终都会走到set方法里边。





相关文章
|
2月前
|
PHP
thinkphp修改分页配置文件
thinkphp修改分页配置文件
23 0
|
运维 关系型数据库 MySQL
ThinkPHP你必须要掌握的配置加载(2)
ThinkPHP你必须要掌握的配置加载
172 0
ThinkPHP你必须要掌握的配置加载(2)
|
设计模式 运维 安全
ThinkPHP你必须要掌握的配置加载(6)
ThinkPHP你必须要掌握的配置加载
189 0
ThinkPHP你必须要掌握的配置加载(6)
|
PHP
ThinkPHP你必须要掌握的配置加载(5)
ThinkPHP你必须要掌握的配置加载
142 0
ThinkPHP你必须要掌握的配置加载(5)
|
PHP 容器
ThinkPHP你必须要掌握的配置加载(3)
ThinkPHP你必须要掌握的配置加载
124 0
ThinkPHP你必须要掌握的配置加载(3)
|
PHP
ThinkPHP你必须要掌握的配置加载(1)
ThinkPHP你必须要掌握的配置加载
125 0
ThinkPHP你必须要掌握的配置加载(1)
|
PHP
ThinkPHP自动加载Loader源码分析(3)
ThinkPHP自动加载Loader源码分析
212 0
ThinkPHP自动加载Loader源码分析(3)
|
PHP
ThinkPHP自动加载Loader源码分析(1)
ThinkPHP自动加载Loader源码分析
140 0
ThinkPHP自动加载Loader源码分析(1)
|
PHP
ThinkPHP自动加载Loader源码分析(2)
ThinkPHP自动加载Loader源码分析
144 0
ThinkPHP自动加载Loader源码分析(2)
|
PHP
ThinkPHP自动加载Loader源码分析(4)
ThinkPHP自动加载Loader源码分析
112 0
ThinkPHP自动加载Loader源码分析(4)