Php Symfony2服务结构

Php Symfony2服务结构,php,symfony,soa,Php,Symfony,Soa,我很难理解Symfony2服务。我到处都读过很多东西(包括SO中的一些),但似乎没有一本能完全解释这一点 假设我有一个bundle a和一个分离的bundle B。我希望a bundle可以使用B功能。我想在服务容器中注入B,以便A能够使用它 哪个捆绑包应该有服务目录?哪一个应该有配置文件?如果需要,两者都可以吗?分机在哪里?为什么?请先阅读这两个问题以及我对它们的回答: , 假设你谈论的是特定于应用程序的捆绑包,我建议只使用一个捆绑包,不要使用服务。然后,您可以通过多种方式注册您的服务:

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

假设我有一个bundle a和一个分离的bundle B。我希望a bundle可以使用B功能。我想在服务容器中注入B,以便A能够使用它


哪个捆绑包应该有服务目录?哪一个应该有配置文件?如果需要,两者都可以吗?分机在哪里?为什么?

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

  • ,
假设你谈论的是特定于应用程序的捆绑包,我建议只使用一个捆绑包,不要使用服务。然后,您可以通过多种方式注册您的服务:

  • 直接在
    config.yml
  • AppBundle
    中创建,或
  • 通过来自的注释-这是我个人更喜欢的

首先阅读这两个问题和我的答案:

  • ,
假设你谈论的是特定于应用程序的捆绑包,我建议只使用一个捆绑包,不要使用服务。然后,您可以通过多种方式注册您的服务:

  • 直接在
    config.yml
  • AppBundle
    中创建,或
  • 通过来自的注释-这是我个人更喜欢的

捆绑包B需要扩展名才能加载其services.xml文件

Bundle B需要在其services.xml文件中有一个条目来定义服务

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

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


在您创建一些服务之前,它是令人困惑的。

Bundle B需要一个扩展名才能加载它的services.xml文件

Bundle B需要在其services.xml文件中有一个条目来定义服务

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

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


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

谢谢,现在有点道理了。尽管我还没有测试,但这是我读过的最有效的解释(如果它是正确的)。谢谢,现在它有了一些意义。尽管我还没有测试,但这是迄今为止我读过的最有效的解释(如果它是正确的)。