在配置上一般有以下問題:
- 每個團隊成員都會有自己的配置項,提交這樣的配置項將會影響其他團隊成員;
- 生產庫密碼和API密鑰不應該出現在代碼庫中;
- 有多個服務器環境的情況:開發、測試、生產;每一種環境應該有自己的配置項;
- 每種情況都去定義所有的配置選項,是非常重復且要花大量時間去維護。
為了解決這些問題,yii引入了一種簡單的環境概念。每一種環境被一套在environments目錄中的文件所表示。init命令用於切換這些環境。它所做的就是從環境目錄復制一切交給根目錄下的所有應用程序。
默認有2套環境:dev和prod。前者是開發環境,它包含所有的開發工具和調試啟用;后者用於服務器部署,它的debug和開發工具都是關閉的。
典型的環境包含應用啟動文件(比如index.php)和諸如以-local.php后綴的配置文件。這些或者是團隊成員個人的配置(通常用於dev環境),或者是特定服務器的配置。比如,生產庫鏈接就可能在prod環境的-local.php配置中。這些本地的配置文件被添加到.gitignore文件中,以至於不會被提交到源代碼庫中。
為了避免重復的配置覆蓋對方,比如,frontend應用按以下的順序讀取配置:
common/config/main.phpcommon/config/main-local.phpfrontend/config/main.phpfrontend/config/main-local.php
Parameters按以下的順序讀取配置:
common/config/params.phpcommon/config/params-local.phpfrontend/config/params.phpfrontend/config/params-local.php
后面的配置文件會覆蓋掉前面的配置文件
調用時,用以下命令,即可調用配置
yii\base\Application::params
該屬性為一個數組,指定可以全局訪問的參數,代替程序中硬編碼的數字和字符,應用中的參數定義到一個單獨的文件並隨時可以訪問是一個好習慣。 例如用參數定義縮略圖的長寬如下:
[ 'params' => [ 'thumbnail.size' => [128, 128], ], ]
然后簡單的使用如下代碼即可獲取到你需要的長寬參數:
$size = \Yii::$app->params['thumbnail.size']; $width = \Yii::$app->params['thumbnail.size'][0];
這樣就可以自定義一些參數, 或通過file_put_contents 來隨時寫入配置。
