laravel基礎(chǔ)教程 —— 配置
所有配置文件都被保存在config
目錄下墙基,并且每個(gè)配置文件里的配置項(xiàng)都有文檔標(biāo)注晒夹。
訪問配置值
config
全局幫助方法被提供在vendor/laravel/framework/src/Illuminate/Foundation/helpers.php
文件中炎辨,該函數(shù)允許使用 .
語(yǔ)法來(lái)獲取文件內(nèi)的配置項(xiàng)值尼啡。
$value = config('app.timezone');
你也可以在config函數(shù)傳遞第二個(gè)參數(shù)作為默認(rèn)值呜投,當(dāng)找不到該配置項(xiàng)時(shí)返回默認(rèn)值.
$value = config('app.timezone', 'Asia/Shanghai');
設(shè)置配置項(xiàng)的值:
config(['app.timezone' => 'Asia/Shanghai']);
環(huán)境配置
我們經(jīng)常希望開發(fā)環(huán)境和生產(chǎn)環(huán)境具有不同的配置锦茁。比如說你在本地開發(fā)環(huán)境使用不同的緩存驅(qū)動(dòng),而laravel基于環(huán)境的配置使之非常容易洞辣。
laravel使用了DotEnv類庫(kù)來(lái)構(gòu)建基于環(huán)境的配置咐刨,默認(rèn)的基于環(huán)境的配置信息在根目錄下的.env
文件中,如果你是通過composer
的方式安裝的laravel扬霜,那么它會(huì)自動(dòng)的將.env.example
文件復(fù)制并重命名為.env
, 如果不是你則需要手動(dòng)做了定鸟。如果你每增加一個(gè)基于環(huán)境的配置項(xiàng),你最好在.env.example
中增加相同的配置項(xiàng)著瓶,這樣在多人協(xié)作中別人可以根據(jù).env.example
理解你的配置信息.
每當(dāng)程序接收到request請(qǐng)求時(shí)联予,應(yīng)用程序會(huì)自動(dòng)裝載.env
文件,并將配置信息封裝在全局變量$_ENV
中材原,當(dāng)然你也可以通過全局輔助函數(shù)env()
來(lái)進(jìn)行獲取環(huán)境配置項(xiàng)信息并將其設(shè)置在你的其它配置文件中沸久,事實(shí)上,laravel已經(jīng)在部分配置文件中使用這種這種方式進(jìn)行配置华糖。
'debug' => env('APP_DEBUG', false),
env
函數(shù)中的第二個(gè)參數(shù)為配置項(xiàng)的默認(rèn)值麦向,當(dāng)環(huán)境配置文件.env
中沒有該配置項(xiàng)時(shí)會(huì)自動(dòng)使用默認(rèn)值。
另外你的.env
配置環(huán)境不應(yīng)該提交到版本控制器中客叉,因?yàn)槠渌?wù)器環(huán)境或者開發(fā)者環(huán)境可能需要引入不同的環(huán)境配置诵竭。比如生產(chǎn)環(huán)境不應(yīng)該開啟debug, 不同的開發(fā)者的本地?cái)?shù)據(jù)庫(kù)配置信息可能不同。
如果你是在一個(gè)團(tuán)隊(duì)中做開發(fā)兼搏,你應(yīng)該在.env.example
文件中引入你增加的環(huán)境配置信息卵慰,并提交給其它開發(fā)者知道佛呻,這樣他們就能夠理解使用你開發(fā)的部分應(yīng)該引入哪些配置信息。
確定當(dāng)前環(huán)境
當(dāng)前環(huán)境是定義在.env
文件中的APP_ENV
變量里的吓著,你可以通過App
facade 的 environment
函數(shù)來(lái)獲人吞簟:
$environment = App::environment();
當(dāng)然你也可以通過 全局方法 env
或 app
來(lái)獲取:
$environment = env('APP_ENV');
# or
$environment = app()->environment();
有時(shí)候我們需要特別識(shí)別一下當(dāng)前環(huán)境是哪種環(huán)境惕耕,并根據(jù)不同的環(huán)境執(zhí)行不同的業(yè)務(wù)邏輯,這時(shí)候就需要通過environment
函數(shù)來(lái)進(jìn)行判斷匹配了诫肠,當(dāng)然你可以在其中傳遞一個(gè)或多個(gè)環(huán)境參數(shù),只要匹配到其中任何一個(gè)都會(huì)返回true:
if (App::environment('local')) {
// if env('APP_ENV') === 'local'
}
if (App::environment('local', 'staging')) {
// env('APP_ENV') === 'local' || env('APP_ENV') === 'staging'
}
緩存配置信息
在config
目錄下有很多配置文件栋豫,配置文件中有不同的配置信息,為了啟動(dòng)程序更為迅速丧鸯,我們可以在開發(fā)環(huán)境中將這些配置信息集中到一個(gè)配置文件中,這樣骡送,程序在被訪問時(shí)昂羡,不會(huì)每次都要加載N個(gè)文件了,我們可以通過artisan
的 config:cache
命令 來(lái)做這件事情摔踱。所有配置文件被整合在一個(gè)文件里并被程序自動(dòng)加載虐先。
當(dāng)然,在開發(fā)環(huán)境并不建議這么做派敷,因?yàn)殚_發(fā)環(huán)境我們可能會(huì)頻繁的更改配置信息蛹批,這樣為了使配置信息及時(shí)生效我們不得不頻繁的運(yùn)行 php artisan config:cache
命令, 偶爾我們會(huì)忘記執(zhí)行命令篮愉。生產(chǎn)環(huán)境緩存配置文件應(yīng)該是常態(tài),并且應(yīng)該在版本發(fā)布時(shí)執(zhí)行緩存配置文件命令重新生成緩存配置信息腐芍。你應(yīng)該將其做為自動(dòng)發(fā)布的一部分。
維護(hù)模式
laravel提供了維護(hù)模式试躏,維護(hù)模式在開啟時(shí)猪勇,所有的訪問請(qǐng)求都會(huì)被返回某個(gè)視圖,這個(gè)視圖是可以自定義的颠蕴。如果維護(hù)模式開啟泣刹,則每個(gè)請(qǐng)求都會(huì)返回 503 狀態(tài)碼。
開啟維護(hù)模式的方法:
php artisan down
關(guān)閉維護(hù)模式的方法:
php artisan up
維護(hù)模式響應(yīng)模板
維護(hù)模式響應(yīng)的視圖模板存放在resources/views/errors/503.blade.php
, 你可以自由的修改犀被。
維護(hù)模式 & 隊(duì)列
在維護(hù)模式開啟時(shí)椅您,隊(duì)列工作將會(huì)暫停執(zhí)行,當(dāng)維護(hù)模式關(guān)閉時(shí)寡键,隊(duì)列將繼續(xù)進(jìn)行處理工作掀泳。
備選方案到維護(hù)模式
由于開啟維護(hù)模式需要關(guān)閉應(yīng)用程序一段時(shí)間,所以你也許可以考慮像Envoyer這種不需要關(guān)閉應(yīng)用程序的持續(xù)集成服務(wù)。