コンフィギュレーションはプロジェクト全体の関心事ですが、各auraのweb、 cli カーネル、そしてプロジェクトは同じ方法で扱います。
サーバーの環境変数、またはプロジェクト全体の環境 config/_env.php
ファイルで
$_ENV['AURA_CONFIG_MODE']
を使ってコンフィグのモードを設定しましょう。
それぞれのAuraプロジェクトには、あらかじめdev
(ローカルデベロップメント), test
(テスト/ステージング), そして prod
(プロダクション) が定義されています。
プロジェクト全体のコンフィグファイルは、config/
ディレクトリにあります。各コンフィグファイルは Aura\Di\Config を継承するクラスであり、それぞれコンフィグのモードを表します。コンフィグクラスは2つのメソッドを持っています。
define()
, プロジェクトの Container へパラメーター、セッター、サービスを定義します。
modify()
, プログラムによる変更のため、 Container からオブジェクトを呼び出します。 (これは Container がロックされてから行われます。よってここで新しいサービスやパラメータ、セッターの変更は出来ません。)
この2段階構成ではライブラリー、カーネルそしてプロジェクトの順番にコンフィグクラスをロードし、それから全ての define()
メソッドを実行します。
コンテナーをロックし、最後に modify()
メソッドを実行します。
コンフィグのモードは、プロジェクトの composer.json
ファイルの extra:aura:config
ブロックでそれぞれ関連したコンフィグのクラスにマッピングされます。
エントリーのキーがモードで、それに対応する値がそのモードで利用されるクラスになります。
プロジェクトネームスペース内のPSR-4 エントリーを通してコンフィグクラスがオートロードされます。
“common” のコンフィグクラスはモードに関わらず常にロードされます。
例えばコンフィグのモードが dev
の場合は、はじめに Common クラスがロードされ、それから
Dev クラスがロードされます。
まずはじめに、モードに応じたコンフィグファイルを開いてください。
パラメーター、セッター、サービスを変更したい場合は define()
メソッドを編集しましょう。
全ての定義が読み込まれた後、プログラムで変更するような場合は modify()
メソッドで行うようにしましょう。
コンフィギュレーションのモードを追加する場合、3つのステップが必要になります。
ここでは qa
モードで作成してみます。
まず初めに、 config/
ディレクトリにコンフィグクラスを作成してみましょう。
次に、プロジェクトの composer.json
ファイルを開き、新しいコンフィグのモードと対応するクラスを追加しましょう。
最後に、composer update
を実行するとComposerが必要な変更をオートローダーに適用します。