symfony使用自由对象

时间:2017-03-15 22:33:43

标签: php symfony doctrine-orm

我想在symfony中构建几个对象,它们将完成特定的工作。例如,一个对象Parser将具有公共方法parse($text)并将返回已解析的文本。所有其他方法都是private来管理解析。

在这种解析方法中,我想将一些工作排​​除在其他对象之外。例如CleanHighlight

我希望将Parser作为服务包含在内。但我是否还需要创建其他对象的服务以包含它们?我不打算在控制器中使用它们。在Parser对象中,我可以使用

调用它们
new Highlight();

但现在我遇到了问题,因为我想在Highlight中使用Doctrine实体管理器。在服务中,我会通过服务参数注入它,但因为Highlight不是不可能的服务。

我应该如何将学说注入这个"免费"对象Highlight。通常,在symfony中使用这样的对象是否可以?

1 个答案:

答案 0 :(得分:0)

除非您将独立地需要这些子对象(Clean,Highlight),否则无需为从Parser调用的每个对象创建服务。如果需要将其他内容传递给子对象,只需从调用对象(Parser)传递它们即可。只需将实体管理器注入Parser,然后将其传递给子对象。

来自Parser:

new Highlight($em);

或者,您可以通过定义抽象服务来使用此变体,其中在父(抽象)服务中定义公共依赖项,然后在依赖对象中扩展该服务。有关详细信息,请参阅文档here