2017-03-15 1 views
0

私はsymfonyでいくつかのオブジェクトをビルドしたいと思います。たとえば、あるオブジェクトParserはパブリックメソッドparse($text)を持ち、解析されたテキストを返します。他のすべての方法は、構文解析を管理するためにprivateです。symfonyはフリーオブジェクトを使用します

この解析方法では、いくつかの作業を他のオブジェクトに除外したいと考えています。例えば、CleanおよびHighlight

サービスとしてParserを含めるとします。しかし、それらを含めるために他のオブジェクトのサービスを作成する必要もありますか?私はコントローラでそれらを使用する予定はありません。 Parserオブジェクトの中で、私はちょうど

new Highlight(); 

でそれらを呼び出すことができます。しかし、私はHighlight内Doctrineのエンティティマネージャを使用したいので、今私は、問題を取得します。サービスの中では、私はサービス引数を介してそれを注入しますが、Highlightは不可能なサービスではないためです。

DoctrineをこのフリーのオブジェクトHighlightにどのように注入すればよいですか?そして、一般的に、このようなオブジェクトをsymfonyで使うのは大丈夫ですか?

+0

はい - あなたはsymfonyでサービスが好きなものを作ることができます。 http://symfony.com/doc/current/service_container.html#creating-configuring-services-in-the-container – craigh

答えて

0

独立してこれらのサブオブジェクト(Clean、Highlight)が必要でない限り、Parserから呼び出される各オブジェクトに対してサービスを作成する必要はありません。サブオブジェクトに他のものを渡す必要がある場合は、呼び出しオブジェクト(Parser)から渡すだけです。エンティティマネージャをParserに挿入し、それをサブオブジェクトに渡します。パーサから

new Highlight($em); 

また、あなたは一般的な依存関係が親(抽象的)サービスで定義されている抽象サービスを定義することにより、この変化を使用して、依存オブジェクトにそのサービスを拡張することができます。詳細は、docs hereを参照してください。

関連する問題