一、thinkphp配置類型有哪些?
1.在thinkphp中,有6種配置。即慣例配置,應用配置、擴充配置、模組配置、情境配置、動態配置。
2.慣例配置就是系統預設的配置。
3.應用配置就是我們自己開發建立的應用單獨的配置。
4.擴充配置主要是實現我們項目在開發過程中有一些擴充程式用到的配置。
5.模組配置就是我們在一個應用中,每一個模組的配置。
6.情境配置主要是實現我們在不同的開發環境中設定的配置。若我們在家裡面辦公,電腦環境可能不一樣;公司裡面辦公,公司的電腦環境有不一樣。
7.動態配置在我們模組中開發實現的動態配置。如我們在某一個控制器中定義資料庫的配置。
二、thinkphp配置的實現原理是什麼樣的?
1.thinkphp實現這樣不同類型的配置,很大程度上面方面了我們進行模組化配置,增強了配置的靈活性。
2.thinkphp的配置載入順序主要是按照如下順序。動態配置》》模組配置》》擴充配置》》應用配置》》慣例配置
3.thinkphp實現配置主要是使用了php的array_merage()函數(如果兩個或更多個數組元素有相同的鍵名,則最後的元素會覆蓋其他元素。)。當我們系統去載入我們的設定檔時,就會覆蓋前面的設定檔,因此才會實現上面第二步的執行順序。
三、為什麼要實現這樣的配置?
1.通過不同類型的配置,我們便於項目的組態管理。加入我們就使用架構內建的配置,當我們在某個模組開發中,需要將資料存在另外一台伺服器的資料庫上,是不是我們的項目就不能實現了。像這種情況還很多,這隻是一個簡單的例子。
四、設定檔要求
在所有的設定檔中都是採用數組的方式,當我們系統在載入該設定檔時,都會return一個數組,這個數組就是我們的設定項目。我們在系統中訪問配置項,可以使用config()助手函數,也可以使用config類
五、如何是實現這些類型的配置呢?
1.慣例配置。
慣例配置直接在架構的核心目錄下面的convention.php中,這裡不做細講。
2.應用配置。
我們在建立項目時,架構會預設在application目錄西面建立config.php,database.php等設定檔。我們直接在相應的檔案中進行操作即可。下面單獨講解的主要是採用建立一個目錄來配置,效果都是一樣的,無非是換了個檔案路徑而已。
a.定義設定檔路徑,找到項目入口檔案,在application同層級目錄下建立一個config的目錄(後面配置講解都是在該目錄下面操作,下面就不單獨講解)。
define('CONF_PATH', __DIR__.'/../config/');
接下來在該目錄下面直接建立設定檔即可,建立的檔案名稱不一定局限於config,database。至於檔案裡面的配置項和convention.php設定檔的方式一致。當我們在項目運行過程中,會自動的載入該目錄下面的配置項。
3.擴充配置。擴充配置主要是我們在開發中用它的一些資料的擴充使用,如我們使用郵箱,要涉及到郵箱的帳號。便可以在該目錄下面配置。我們在config目錄下面建立一個extra目錄,在該目錄下面建立對應的檔案。如我在下面建立了email.php檔案,定義如下內容:
<?phpreturn ["user_emial" => "1005349393@qq.com"];
在我們系統中載入該配置項。
var_dump(config("email.user_emial")); // 在系統預設中,會給我們的環境變數都加一個PHP的首碼,並且都會將配置項轉換為大寫。這裡我們使用我們的助手函數便可直接存取配置項。
4.模組配置。這裡大致講解一下即可。主要的就是在我們的模組目錄下面建立對應的config.php,database.php等檔案即可。
5.情境配置。***這是本文的大招。情境配置主要是為了適應我們不同的開發環境,例如我們在公司的環境和在家裡面的環境配置不一致,此時我們可能需要修改很多地方,同時回到了公司又得修改過來,這樣豈不是很麻煩。
首先,我們在config目錄下面的設定檔中載入一個配置項。
'app_status' => 'office', // 這裡的配置項的值就是我們對應的配置環境。
接下來,在我們的config目錄下面建立一個office.php(這裡的檔案名稱必須和上面配置項的值完全一致)
最後,我們直接在我們的office.php設定檔中配置即可。其實在thinkphp還有個比較不錯的功能就是.env。之前一直知道laravel有,沒主要thinkphp5,最近才發現。使用該功能對於開發中的配置又方便了很多了。很贊。
首先我們在我們的項目目錄下面建立一個.env的檔案,裡面配置我們的配置項。如下
status= office
我們要使用的話,直接使用架構內建的env類即可。至於更多有關env的方法直接參考開發手冊。
'app_status' => Env::get("status");我們將上一步情境配置項中的值設定為.env檔案中的配置項。一定要引入ENV這個類。
通過我們的.env檔案,只需要我們實現將一些設定檔配置好,或者將一些常用的設定檔放在.env檔案中,我們就只修改這一個檔案即可。
6.動態配置。動態配置顧名思義是隨著我們項目開發的需要來配置,而不是直接使用我們設定檔中的配置。下面列舉一個簡單的執行個體。
<?phpnamespace app\index\controller;use think\Controller;class Index extends Controller{public function index() { config("app_name", "weixin"); // 在控制器中配置一個app_name的配置項,這裡也可以使用config類來操作。 }}