我想在symfony中构建几个对象,它们将完成特定的工作。例如,一个对象Parser
将具有公共方法parse($text)
并将返回已解析的文本。所有其他方法都是private
来管理解析。
在这种解析方法中,我想将一些工作排除在其他对象之外。例如Clean
和Highlight
。
我希望将Parser
作为服务包含在内。但我是否还需要创建其他对象的服务以包含它们?我不打算在控制器中使用它们。在Parser
对象中,我可以使用
new Highlight();
但现在我遇到了问题,因为我想在Highlight
中使用Doctrine实体管理器。在服务中,我会通过服务参数注入它,但因为Highlight
不是不可能的服务。
我应该如何将学说注入这个"免费"对象Highlight
。通常,在symfony中使用这样的对象是否可以?
答案 0 :(得分:0)
除非您将独立地需要这些子对象(Clean,Highlight),否则无需为从Parser调用的每个对象创建服务。如果需要将其他内容传递给子对象,只需从调用对象(Parser)传递它们即可。只需将实体管理器注入Parser,然后将其传递给子对象。
来自Parser:
new Highlight($em);
或者,您可以通过定义抽象服务来使用此变体,其中在父(抽象)服务中定义公共依赖项,然后在依赖对象中扩展该服务。有关详细信息,请参阅文档here。