ある登録済みコンテナー定義から別のコンテナー定義に動的依存関係を渡すにはどうすればよいですか? この場合、汎用の Database オブジェクトは、汎用の Config オブジェクトから継承する必要があります。ツイストは構成が静的ではなく、特定の環境変数に応じてロードされることです。
関連するメソッドを構成する
public function __construct()
{
$configFile = 'example.config.yml';
$yamlParser = new Parser();
$reader = new Config\Reader($yamlParser);
$configYaml = $reader->parse(file_get_contents($configFile));
$config = new Config\Environment(getenv('SITE'), $configYaml);
$this->config = $config;
}
public function getEnvironmentConfig()
{
return $this->config;
}
設定の登録は次のように簡単です
$container->register('config', 'Config');
データベースは現在、次のようにコンテナーに追加されています。
$container
->register('database', 'Database')
->addArgument($config->getEnvironmentConfig('Database', 'db.username'))
->addArgument($config->getEnvironmentConfig('Database', 'db.password'))
;
しかし、私は次のようなことをしたい
$container
->register('database', 'Database')
->addArgument(new Reference('config')->getEnvironmentConfig('Database', 'db.username'))
->addArgument(new Reference('config')->getEnvironmentConfig('Database', 'db.password'))
;
$config in-PHP 変数により、PHP で構築された構成からの移行が不可能になります。yaml でサービスを定義して、コンテナに次のことを強制したい:
- 構成のインスタンス化
- 構成 yaml ファイルを解析し、環境固有のバージョンを作成する
- getEnvironmentConfig への呼び出しでこれを返します
これは可能ですか?