2017-03-15 66 views
0

我想在symfony中構建幾個對象,它將完成特定的工作。例如,一個對象Parser將有一個公共方法parse($text)並將返回分析文本。所有其他方法都是private來管理解析。symfony使用自由對象

在這個解析方法中,我想排除一些工作到其他對象。例如CleanHighlight

我想包括Parser作爲服務。但我是否也需要創建其他對象的服務來包含它們?我不打算在控制器中使用它們。內Parser對象我可以給他們打電話只是

new Highlight(); 

但現在我得到一個問題,因爲我想用主義實體管理器內Highlight。在一個服務中,我會通過服務參數注入它,但是因爲Highlight不是不可能的服務。

我應該如何注入這個「免費」對象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); 

或者,也可以通過定義,其中共同依賴關係在父(摘要)服務中定義,然後在相關對象擴展該服務抽象服務使用的這個變體。有關詳細信息,請參閱文檔here