が、これぐらい誰かがすでにやっているはず。
と思って探してたら、見つけた。
「Symfony2: Dependency Injection Types – Update」
これによると、過去にSymfonyでインターフェースを使ったインジェクションがサポートされていたらしい。で、ここのスレッドでの話し合いの結果、問題があるので機能そのものを削除することになった。
何度も読んだが、今ひとつ理解し切れないのだけど、
おそらく、
- インターフェースインジェクションを持つクラスAを継承して別のクラスBを作成、
- 別クラスBに対して「自分でインジェクション」を行う、
- が、SymfonyのDIコンテナがクラスAとBを混乱、
- クラスBに対して再びインジェクション実行、
- 最初に自分でインジェクトした結果が上書き、
という流れのよう。
ようするに、
インターフェースは継承したクラスにも含まれるので、
依存注入のコントロールが難しい、
ということだと思う。
正直に言えば、同じインターフェースで別の依存性を注入するのが問題な気がするが、できるのだから、できるようにしないといけない。
とにかく、見つけてられて、すっきりした。
インターフェースを使った依存性の注入はやめておこう。
0 件のコメント:
コメントを投稿