構成情報に対する典型的なアプローチには、いくつもの問題があります。
これらの問題を解決するために、Yii は単純な環境の概念を導入しました。
それぞれの環境は environments
ディレクトリ配下の一群のファイルとして表現されます。init
コマンドが環境を初期設定するのに使用されます。
init
コマンドが実際にやっていることは、環境ディレクトリから、全てのアプリケーションがあるルート・ディレクトリへと、すべてをごっそりとコピーすることです。
デフォルトでは二つの環境があります。すなわち、dev
と prod
です。最初のものは開発用の環境で、全ての開発ツールとデバッグが有効になっています。
第二のものは本番サーバ配備用の環境で、デバッグと開発ツールは無効になっています。
典型的には、環境ディレクトリは index.php
のようなアプリケーション・ブートストラップ・ファイルや、-local.php
という接尾辞を持つ構成情報ファイルを含んでいます。
environments
ディレクトリにあるローカルな構成情報は、init
が実行された後に、対応するアプリケーション構成ディレクトリにコピーされるテンプレートです。
コピーされた後に、それらがローカルな構成情報となります。
このディレクトリに置く構成情報は、データベース接続の認証情報など、秘密の環境固有設定情報を保持するためのものであり、
バージョン・コントロール・システムに入れられることを意図しないものです。
このため、このディレクトリのファイルは .gitignore
に追加され、git のステージングの対象から外されます。
重複を避けるために、構成情報はお互いを上書きします。 例えば、フロントエンドは次の順序で構成情報を読み取ります。
common/config/main.php
common/config/main-local.php
frontend/config/main.php
frontend/config/main-local.php
パラメータは次の順序で読まれます。
common/config/params.php
common/config/params-local.php
frontend/config/params.php
frontend/config/params-local.php
後の構成情報ファイルが先のものを上書きするわけです。
全体の枠組みはこのようになります。