ThinkPHP之配置源碼執行流程

本文主要針對Config的源碼進行簡單的執行解析,從圖解到代碼希望你有更深的理解。上文提到的yaconf就是在這里體現的,每一篇文章都是為了給后邊做鋪墊。

六、Config源碼執行流程

雖說上面的Yaconf對于config的源碼解析沒有多大的幫助,但是也是在擴寬一下思路,以后在工作中可以嘗試使用Yaconf。

進入正題,想知道Config是怎么進行加載解析的,先來畫一個圖。一起看一下加載config的執行流程。

ThinkPHP之配置源碼執行流程

回到public/index.php,在上一期說了類的自動加載是在加載base.php文件的過程中執行的。

那么config的加載是在下圖框起來的這里,這里涉及到了容器,會有一個單獨的專題來對容器進行剖析。

這里就不過多說明了,這段代碼回去執行`D:phpstudy_proWWWthinkphpSourceCodeAnalysisthinkphplibrarythinkApp.php這個文件的run方法。

ThinkPHP之配置源碼執行流程并且在run方法中需要追蹤的是initialize應用初始化這個函數

ThinkPHP之配置源碼執行流程接著在initialize這個方法中就會看到配置文件的蛛絲馬跡,隨之而來就是一個初始化應用init

ThinkPHP之配置源碼執行流程直到走到init方法中,才算是進入了主題。

開始了自動加載配置文件,并且還調用了config類中的load方法,也是需要一起閱讀的。

ThinkPHP之配置源碼執行流程來到這里之后需要簡單的進行解讀一下

這段代碼會直接走到elseif中,因為在app目錄下沒有設置config目錄

并且這里有個configPath這個屬性熟悉吧!這個值最終就是D:phpstudy_proWWWThinkPHPSourceCodeAnalysisconfig

ThinkPHP之配置源碼執行流程

在接這就是把config目錄下的文件全部拿出來。

傳遞給config類的load方法

在這里有幾個知識點提一下,就當回顧了

  • scandir ?:以升序的方式返回一個目錄下的所有文件,還有第二個參數1,表示降序的方式返回一個目錄下的所有文件。
  • pathinfo:以數組的形式返回文件信息,分別為目錄名、文件名、擴展名,其中的幾個參數代碼中有提到,可以看下圖即可。

在這段代碼中有一個屬性configExt,這個值是在環境變量讀出來的,給的值是php

ThinkPHP之配置源碼執行流程

堅持學習、堅持寫博、堅持分享是咔咔從業以來一直所秉持的信念。希望在偌大互聯網中咔咔的文章能帶給你一絲絲幫助。我是咔咔,下期見。

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享