私は様々な種類のページをレンダリングするための簡単なサービスを構築しようとしています。 Strategy patternとして設計されるSymfony2の戦略パターン
$somePageType = new PageType(...);
$this->get('page.service')->render($somePagetype);
...:基本的な考え方は次のようなものを持っています。ページタイプはrender
メソッドとのインターフェイスを実装し、page.service
はそれを呼び出します。問題は、ページ型クラスでDoctrineを使用したいと思うことです。私の選択肢は何ですか?私はこれらのクラスのそれぞれについてサービスを作成することを避けたいと思います。それも可能ですか?サービスなしでコンテナに対応させることは可能ですか?おそらく、将来的には、ページの種類によってはDoctrine以外のものが必要かもしれないので、そのことにも留意する必要があります。
これは、コンテナを周囲に通すのは良いことではありません。彼の目的が教義を必要とするならば、それは教義の目的のためのコンストラクタにパラメータを加えることによってそれを要求すべきです。 – meze
@もちろん、すべての戦略に依存性が異なる場合はどうなりますか?これが唯一の方法でしょう。しかし、私は個人的にすべての戦略を実際にサービスとして定義します。 – gilden
あなたの戦略をどのようにテストしますか? symfonyなしで別のプロジェクトで再利用できますか? – meze