gpt4 book ai didi

logic - 使用 Symfony3 的引用程序集服务

转载 作者:行者123 更新时间:2023-12-02 01:21:57 25 4
gpt4 key购买 nike

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

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

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

我注意到有 3 个选项可以解决这个问题:

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

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

最佳答案

使用setter injection在这两种服务上:

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

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

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

关于logic - 使用 Symfony3 的引用程序集服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39595955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com