亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長資訊網(wǎng)
    最全最豐富的資訊網(wǎng)站

    ThinkPHP配置文件加載流程

    ?

    終于來到了正題,本文會對config配置文件加載過程進(jìn)行解析,之前的所有工作都是為了本節(jié)工作做鋪墊

    ?

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

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

    ThinkPHP配置文件加載流程
    在這里插入圖片描述

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

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

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

    ThinkPHP配置文件加載流程并且在run方法中需要追蹤的是initialize應(yīng)用初始化這個函數(shù)

    ThinkPHP配置文件加載流程接著在initialize這個方法中就會看到配置文件的蛛絲馬跡,隨之而來就是一個初始化應(yīng)用init

    ThinkPHP配置文件加載流程直到走到init方法中,才算是進(jìn)入了主題。

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

    ThinkPHP配置文件加載流程來到這里之后需要簡單的進(jìn)行解讀一下

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

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

    ThinkPHP配置文件加載流程在接這就是把config目錄下的文件全部拿出來。

    傳遞給config類的load方法

    在這里有幾個知識點(diǎn)提一下,就當(dāng)回顧了

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

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

    ThinkPHP配置文件加載流程緊接著就需要來到thinkphp/library/think/Config.php這個文件了,在app文件中最后調(diào)用了config類中的load。

    一起來看看都經(jīng)歷了什么

    在load這個方法中,流程的最終走向會到loadFile這個方法中,至于elseif的代碼為什么不會走,或者說這段代碼就是多余的。

    因為當(dāng)Yaconf安裝后在PHP啟動后就會直接去加載對應(yīng)的配置文件

    ThinkPHP配置文件加載流程來到loadFile這個文件后

    我們都知道在ThinkPHP框架中,config目錄下的所有文件都是PHP類型的

    所以在判斷了類型后就直接進(jìn)入到set里邊進(jìn)行數(shù)據(jù)的處理

    include直接引入的就是config目錄下的配置文件,并且所有的配置文件都是直接return返回一個數(shù)組

    ThinkPHP配置文件加載流程在set方法中,這塊代碼就是核心了

    一直循環(huán)合并數(shù)組,最終把所有的配置信息都返回給了config這個屬性

    截止到這里config目錄下的所有配置就加載完成了。

    ThinkPHP配置文件加載流程

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號