Symfony3的带参考装配的服务

强尼

在我的SF3项目中,我有两个相互依赖并引起循环引用问题的服务:

page_handler : 
    arguments : ["@sentence_handler"]
sentence_handler :
    arguments : ["@page_handler"]

因为,从类PageHandler中,我使用SentenceHandler向页面添加一个句子,而从SentenceHandler中,我使用PageHandler从Page中获取所有句子。

我注意到3种解决方案:

  • 将我的addSentence()方法移至SentenceHandler:但是,我将从SentenceHandler修改页面,这是不合逻辑的。
  • 将getAllSentences()方法移至PageHandler:但是,我将从PageHandler中获取句子,这是不合逻辑的。
  • 从PageHandler到SentenceHandler的重复getPage()方法将变得独立:但这不是DRY

最好的方法是什么?您还有其他想法吗?

耀志

在两种服务上使用二传手注入

page_handler:
    class: PageHandler
    calls:
        - ["setSentenceHandler", ["@sentence_handler"]]

sentence_handler:
    class: SentenceHandler
    calls:
        - ["setPageHandler", ["@page_handler"]]

只要您不需要/不使用构造器中的服务(无论如何还是有问题的),就不会有明显的区别。意味着您以后可以安全地将服务注入其他服务中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章