十一、解析如何获取config如何获取配置
都知道在获取配置信息的时候直接使用\Config::get()就可以获取到配置文件的信息。
接下来咔咔就来剖析一下获取配置的流程。
框架给提供了几个方法来获取配置信息。
\Config::get(‘配置参数’);
\Config::get(‘配置文件’);
\Config::pull(‘配置文件’);
这其中估计使用第一种的就很少了,第一种的方式就是直接获取所有配置文件中的对应的配置。
例如:想获取config目录下的应用名称配置
就可以直接用\Config::get(‘app_name’);来直接获取
那么这个流程是怎么样的呢!
当直接获取配置参数时,走的代码流程就只有这俩个。
第一段是给加上前缀app
第二段是循环在config文件中获取数据。
这段代码如果你直接断点调试的话是看不到什么效果的,咔咔把这段代码给大家移到外面去执行,就会看的很清楚了。
咔咔将这段代码给移到了index控制器中,这样就可以看到的很清晰了
先看打印结果,确认没啥问题
其实这里的代码如果放在源码中执行你会看到很多其它的信息,会很影响信息的解读的。
但是咱们移植出来后,就可以确保代码的运行时没有其它的杂乱信息,有利于对信息的正确解读。
然后紧接着看这段代码,这段代码之前咔咔看的时候感觉没什么,但是越看你会越发现这块代码的设计很是优秀。
为什么会这样说呢!
首先这段代码会走第一次循环就是执行app,这次执行会在全部的config中获取出键值为app的配置信息。
然后把值再次赋值给config变量,执行第二次循环为app_name。
这里循环获取数据就是在第一次循环获取数据的基础上得到的。也就是第二次是在$config[‘app’]下获取的数据。
由此可见这段代码设计的是多好啊!
至于其它俩个方法就交给你们了,可以简单的试着跟着咔咔一样把代码移植出来,然后一步一步的解读。
你就会发现代码的优美之处,看的多了,对于以后自己写代码也会提供很多的思路的。
十二、总结
对于框架中config源码的解析就到这里结束了,其实源码的解析并不是很多,而是用了大量的篇幅来介绍了间接使用的一些技术。
虽说这些技术在这个已经成型的框架中不能再进行好好的利用,但是最起码让我们知道了他们每一个扩展的作用。
例如Yaconf对于项目配置这块会有很大的帮助,可以让配置文件跟项目分离,确保项目安全和跟运维之间的协同。
在例如开篇说的ArrayAccess,这个就是提供像访问数组一样访问对象的接口而已,这个也就是一种好的思想,同理在以后得开发中也可以借鉴这种思想。
在配置文件这一篇中,咔咔认为最重要的就是使用工厂模式加载的不同类型配置文件,在这一节中咔咔也说了后期会在出一篇文章在进行解析的,这一节点的文章如果没事的话真的可以好好的阅读一下。
这个也是目前在阅读源码的过程中直接碰到的第一个设计模式,后边会遇到越来越多的设计模式,遇到在进行解析
之前跟着咔咔一起实现的优化框架源码的过程中,这个配置一定要改过来,否则你需要把框架所有的配置类型都需要改为对应的。