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

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