設定ファイル変数を使ったメソッドインジェクションできた
これでオブジェクトのコンストラクタ引数にメソッドの実行結果を使えるようになった。
<?php class SomeComponent { private $obj; private $key; private $id; public function __construct(OtherComponent $a, $key, $id) { $this->obj = $a; $this->key = $key; $this->id = $id; }
こういうクラスがあるとき
; SomeComponent.ini [main] constructor = id,$id $id = Request.get.id
こういう設定ファイルを書くと、
<?php ... $container->register('SomeComponent', new SomeComponent($otherComponent, 'id', $request->get('id')));
的なことが行われる。
つまり、
<?php class SomeAction { public function execute(SomeComponent $someComponent){ ... } }
と書くと、自動的にOtherComponentオブジェクト、'id'文字列、Request->get('key')実行結果を引数にして生成されたSomeComponentオブジェクトを受け取れる。
これでやっとまともなDIコンテナっぽくなったかな。そう呼ぶことはしないけど。