1、簡介
Lumen架構的所有配置項都放在設定檔 .env中。
2、訪問配置值
你可以使用全域的輔助函數 config來訪問配置值,配置值可以通過”.”來分隔設定檔和配置項,如果配置項不存在的話則會返回預設值:
$value = config('app.timezone');
如果要在運行時設定配置值,傳遞一個數組到 config函數:
config(['app.timezone' => 'America/Chicago']);
3、 環境配置
基於應用運行環境擁有不同配置值能夠給我們開發帶來極大的方便,比如,我們想在本地和線上環境配置不同的緩衝驅動,在Lumen中這很容易實現。
Lumen使用了Vance Lucas開發的PHP庫 DotEnv來實現這一目的,在新安裝的Lumen中,根目錄下有一個 .env.example檔案,如果Lumen是通過Composer安裝的,那麼該檔案已經被重新命名為 .env,否則的話你要自己手動重新命名該檔案。
在每次應用接受請求時, .env中列出的所有變數都會被載入到PHP超全域變數 $_ENV中,然後你就可以在應用中通過輔助函數 env來擷取這些變數值:
$debug = env('APP_DEBUG', true);
第二個傳遞給 env函數的值是預設值,如果給定key對應的環境變數不存在則使用該預設值。
不要把 .env檔案提交到源碼控制(svn或git等)中,因為每個使用你的應用的不同開發人員或伺服器可能要求不同的環境配置。
如果你是在一個團隊中進行開發,你可能需要將 .env.example檔案隨你的應用一起提交到源碼控制中,通過將一些配置值以預留位置的方式放置在 .env.example檔案中,其他開發人員可以很清楚明了的知道運行你的應用需要配置哪些環境變數。
判斷當前應用環境
當前應用環境通過 .env檔案中的配置項來 APP_ENV決定,可以通過App執行個體上的 environment方法來訪問該配置值:
$environment = app()->environment();
你也可以向 environment方法中傳遞參數來判斷當前環境是否匹配給定值,如果需要的話你甚至可以傳遞多個值,如果匹配的話會返回 true:
if (App::environment('local')) { // The environment is local}if (App::environment('local', 'staging')) { // The environment is either local OR staging...}