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