當你需要在運行時訪問配置項時,可以使用Config類:
獲取一個配置項的值**
復制代碼 代碼如下:
Config::get('app.timezone');
如果配置項不存在,你還可以指定返回的默認值:
復制代碼 代碼如下:
$timezone = Config::get('app.timezone', 'UTC');
為配置項賦值
注意"點"式語法可以用來訪問不同文件裡的配置項的值。你還可以在運行時為配置項賦值。:
復制代碼 代碼如下:
Config::set('database.default', 'sqlite');
在程序運行時設置的配置值只在本次請求中有效,不會對以後的請求造成影響。
環境配置
通常應用程序根據不同的運行環境確定不同的配置項的值是非常有用的。例如,你也許希望在開發機器與生產機器上使用不同的緩存驅動(cache driver)。根據環境來改變配置就能很容易的達到此目的。
在config目錄下創建一個和你的環境名同名的目錄,例如local。然後,創建配置文件,這些配置文件中包含你想覆蓋的配置選項。例如,要在本地環境中覆蓋緩存驅動(cache driver),你可以在app/config/local目錄中創建cache.php文件並包含如下內容:
復制代碼 代碼如下:
<?php
return array(
'driver' => 'file',
);
注意: 不要使用'testing'作為環境名,它是專門為單元測試所保留的。
注意,你不需要為基礎配置文件中的所有配置項指定值,只需指定你需要覆蓋的配置選項即可。環境配置文件將會以"cascade"方式覆蓋基本配置文件。
接下來,我們需要指導框架如何確定其運行環境。默認環境總是produciton。然而,你可以在安裝目錄的根目錄下的bootstrap/start.php 文件中設置其他的環境。在該文件中,你可以找到 $app->detectEnvironment方法的調用。傳入的數組參數就是用來確定當前運行環境的。你可以根據需要添加其他的環境或機器名。
復制代碼 代碼如下:
<?php
$env = $app->detectEnvironment(array(
'local' => array('your-machine-name'),
));
在此案例中,'local' 是運行環境的名稱,'your-machine-name' 是服務器的主機名。在Linux和Mac上,可以通過 hostname 命令來確定所用機器的主機名。
如果你需要更靈活的環境檢查方式,可以在調用detectEnvironment時傳遞一個閉包(Closure) , 這樣你就可以按照自己的方式檢查環境了:
復制代碼 代碼如下:
$env = $app->detectEnvironment(function()
{
return $_SERVER['MY_LARAVEL_ENV'];
});
獲取當前的應用環境
可以通用調用environment方法來獲取當前的應用環境:
復制代碼 代碼如下:
$environment = App::environment();
你還可以將參數傳遞給 environment 方法來判斷應用環境是否與某個給定值匹配:
復制代碼 代碼如下:
if (App::environment('local'))
{
// The environment is local
}
if (App::environment('local', 'staging'))
{
// The environment is either local OR staging...
}
維護模式
當應用處於維護模式時,所有的路由都會指向一個自定義的視圖。這對於更新應用或執行維護任務時臨時"禁用"當前應用是很方便的。App::down方法在app/start/global.php文件裡進行了定義,它將在維護模式時將該方法輸出的內容展示給用戶。
要開啟維護模式,只需執行Artisan 的 down命令:
復制代碼 代碼如下:
php artisan down
要關閉維護模式,只需執行 up 命令:
復制代碼 代碼如下:
php artisan up
當你的應用處於維護模式時,如需展示一個自定義的視圖,只要在app/start/global.php文件中加入如下代碼即可:
復制代碼 代碼如下:
App::down(function()
{
return Response::view('maintenance', array(), 503);
});
如果傳遞給 down 方法的閉包返回值為 NULL, 在此次請求中將忽略維護模式。
維護模式 & 隊列
當應用程序處於維護模式時, 將不接受新的隊列任務 。一旦應用程序退出維護模式,隊列任務的處理即恢復正常。