2017-03-15 64 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