?
在之前閱讀到框架加載源碼的過(guò)程中,看框架源碼存在以下問(wèn)題,于是咔咔就手動(dòng)的進(jìn)行了一次簡(jiǎn)單的優(yōu)化,可以看看思路哈!不建議大家直接去做更改哈!
?
在thinkphp/library/think/Config.php
中方法loadFile這里看起來(lái)是不是有點(diǎn)不太優(yōu)雅了。
既然在方法最后使用parse
方法,也就是之前提到的工廠模式加載其它類(lèi)型的配置文件。
那么為何不讓這個(gè)工廠模式也加載PHP和yaml類(lèi)型的配置文件。
此時(shí)就需要在
thinkphp/library/think/config/driver
這個(gè)目錄建立php文件和yaml文件了。
首先建立一個(gè)php文件。
并且仿照其它三個(gè)類(lèi)型文件,在php文件類(lèi)型中只需要判斷是否為文件,然后把文件引入進(jìn)來(lái)即可。
在框架中PHP類(lèi)型的配置文件都是數(shù)組形式的,所以在Php.php文件中parse方法直接返回config屬性即可。
開(kāi)始開(kāi)心的測(cè)試吧!之前在env的文件中配置了CONFIG_EXT這個(gè)值為yaml。
也就是說(shuō)讀取config目錄下的配置文件時(shí),只能讀取擴(kuò)展為yaml類(lèi)型的文件。
所以需要先把這個(gè)值給改回來(lái),等后面把yaml類(lèi)型的工廠類(lèi)寫(xiě)好之后就可以使用了。
為了測(cè)試方便在config目錄下添加一個(gè)新的配置
然后把config類(lèi)中的lodeFile方法中判斷php和yaml類(lèi)型的代碼注釋掉

在控制器讀取config/app.php配置
打印結(jié)果
打印出來(lái)的結(jié)果沒(méi)有任何瑕疵,也就說(shuō)我們進(jìn)行簡(jiǎn)單優(yōu)化的代碼并沒(méi)有不適之處。至于yaml也是一樣的道理,只需要把最終的數(shù)據(jù)轉(zhuǎn)為數(shù)組返回就行了。