首頁 >php框架 >ThinkPHP >ThinkPHP之配置源碼執行流程

ThinkPHP之配置源碼執行流程

咔咔
咔咔原創
2020-10-09 15:11:051600瀏覽

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

六、Config原始碼執行流程

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

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

回到public/index.php,在上一期說了類別的自動載入是在載入base.php檔案的過程中執行的。

那麼config的載入就是在下圖框起來的這裡,這裡牽涉到了容器,會有一個單獨的專題來對容器進行剖析。

這裡就不太說明了,這段程式碼回去執行`D:\phpstudy_pro\WWW\ThinkPHPSourceCodeAnalysis\thinkphp\library\think\App.php這個檔案的run方法。

並且在run方法中需要追蹤的是initialize應用初始化這個函數

接著在initialize這個方法中就會看到設定檔的蛛絲馬跡,隨之而來就是一個初始化應用init

直到走到init方法中,才算是進入了主題。

開始了自動載入設定文件,也呼叫了config類別中的load方法,也是需要一起閱讀的。

#來到這裡之後需要簡單的進行解讀一下

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

#並且這裡有configPath這個屬性熟悉吧!這個值最終就是D:\phpstudy_pro\WWW\ThinkPHPSourceCodeAnalysis\config\

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

傳遞給config類別的load方法

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

  • scandir  :以升序的方式返回一個目錄下的所有文件,還有第二個參數1 ,表示降序的方式傳回一個目錄下的所有檔案。
  • pathinfo:以陣列的形式傳回檔案訊息,分別為目錄名、檔案名稱、副檔名,其中的幾個參數程式碼中有提到,可以看下圖即可。

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

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

#

以上是ThinkPHP之配置源碼執行流程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn