七、工厂模式加载其它类型的配置文件
在之前看到的loadFile方法中,文件类型为PHP或者yaml程序就打断了,就不会在去执行后边的pares方法。
那么这个parse方法是做什么的呢!
进入到paras这个方法后,首先看注释
随后使用了一个工厂模式去加载think/config/driver下的文件
进入到factory这个方法后,这块内容属于容器的就不过多解释了。
只需要知道这里最终会返回一个实例给paras方法的$object变量
最终还是使用在上文中提到的set方法,而内部的object->parse()就是执行返回对象的内部方法,例如下图展示三个类型。ini、json、xm三个类型都存在同样的方法
这是ini类型,其它俩个的类型也是一毛一样的,就是会有同样的方法来实现对应的功能
简单梳理一下工厂模式加载不同类型的配置
- 把对应的类型传给一个方法
- 然后这个方法返回对应的实例
- 在用这个实例去调用类里边的方法
- 所有实例里的方法名都是一致的
这里咔咔后期会单独出一篇文章模仿这个实现另一个功能,导图会有所有的文章链接哦!
在ini.php中看到了一个方法parse_ini_file,其实这个方法根据之前的学习就大概能了解到时把ini类型的配置文件转为数组形式。这里就不做演示了,很是简单哈!
那么其它俩种类型都是为了把文件数据转为数组的。
八、yaml初体验
yaml就是一个类似于xml、json数据通信方式,但是yaml是以数据为中心,而非标记语言为重点。
这里提到yaml是因为在框架源码中提到了这个,后边的流程也是需要走yaml,所以还是需要简单的了解一下哈!
安装yaml,直接到pcel里搜索yaml,下载对应的版本即可。下载方式跟之前yaconf安装一样的。
安装成功后就会在PHP中存在这个扩展。
这里需要注意的是需要在php.ini中把yaml扩展文件加进去哈!
如果不会就去Yaconf在window上安装那一栏去看是怎么安装的,安装那个流程就可以了。
安装完成后就是简单的使用了,在config中新建一个kaka.yaml文件。
并且写上如下的内容,切记在yaml中冒号后边需要空一格,yaml写法就不过多说了,毕竟平时不怎么用。
这里说明只是为了阅读框架代码而做的工作。
测试yaml数据读取
读取出来的数据就是一个数组,也就是说把yaml格式的数据转化为数组形式。
这个方法是从哪里知道的呢!
还记得在config类下loadFile方法中,根据文件扩展的不同加载不同形式的方法。
PHP类型的直接就走了set,yaml类型的把数据处理为数组后执行set方法
如果是其它类型的话就会在上边说的工厂模式返回对应类名的实例,并执行对应类里边的方法将格式都转化为数组形式。最终还是使用set方法
其它类型的配置文件最终都会走到set方法里边。