因 .env
不會被納入版本控制器中,所以本地 .env
里添加變量時 必須 同步到 .env.example
中,以免影響其他項目參與者的工作。
假如項目中需要『CDN 域名』的變量,在 Laravel 中有以下幾種選項:
config/app.php
文件中。 —— ? 無法區(qū)分環(huán)境進(jìn)行配置.env
文件中,使用 env()
方法直接讀取。 -—— ? 雖然解決了環(huán)境變量問題但是不推薦.env
和 config/app.php
文件中,然后使用 config()
函數(shù)來讀取。—— ? 最佳實踐config/app.php
中調(diào)用即可,不需要動到任何一行業(yè)務(wù)邏輯代碼。另外,有一種必須使用第四種方案的場景。Laravel 帶了一個 config:cache
的命令,可以用來提高配置的加載速度。這種場景,是絕對不能在業(yè)務(wù)代碼中使用 env()
方法,會獲取不到內(nèi)容。
.env
文件中設(shè)置:
CDN_DOMAIN=cdn.domain.com
config/app.php
文件中設(shè)置:
'cdn_domain' => env('CDN_DOMAIN', null),
程序中兩種獲取 相同配置
的方法:
env('CDN_DOMAIN')
config('app.cdn_domain')
在此統(tǒng)一規(guī)定:所有程序配置信息 必須 通過 config()
來讀取,所有的 .env
配置信息 必須 通過 env()
來讀取,絕不 在配置文件以外的范圍使用 env()
。
這樣做主要有以下幾個優(yōu)勢:
config()
是配置信息,env()
只是用來區(qū)分不同環(huán)境;config
中還可以利用框架的 配置信息緩存功能 來提高運行效率;config()
在 env()
之上多出來一個抽象層,會使代碼更加健壯,更加靈活。
更多建議: