Symfony2 服务结构


Symfony2 service structure

我很难理解Symfony2服务。我到处读过很多东西(包括SO中的一些东西),但似乎没有一个能完全解释它。

假设我有一个捆绑包 A 和一个单独的捆绑包 B。我希望 B 功能可用于 A 捆绑包。我想在服务容器中注入 B,以便 A 能够使用它。

哪个捆绑包应该有服务目录?哪一个应该有配置文件?如果需要,两者都有?扩展去哪儿了?为什么?

捆绑包 B 需要一个扩展才能加载它的服务.xml文件。

捆绑包 B 需要在其服务.xml文件中输入一个条目来定义服务。

捆绑包 B 将具有包含您的服务类的服务目录,该类公开所需的功能。

捆绑包 A 不需要任何特殊的东西。 它将能够使用该容器访问捆绑包 B 公开的服务。 只需要知道服务 ID。

在你做一些服务之前,这很令人困惑。

先阅读这两个问题和我对它们的回答:

  • Symfony2概念问题:通用捆绑包与特定捆绑包,
  • 所有东西真的应该在Symfony 2中是一个捆绑包吗?

假设您谈论的是特定于应用程序的捆绑包,我建议只拥有一个捆绑包并将服务排除在外。然后,您可以通过多种方式注册服务:

  • 直接在config.yml
  • AppBundle中创建扩展类,或
  • 通过JMSDiExtraBundle的注释——这是我个人更喜欢的。