Symfony:向同一个应用程序中的另一个bundle发出请求以获取数据

时间:2015-03-10 02:35:05

标签: php symfony architecture soa

我有一点困境,我有一个Symfony2应用程序,在其中我已经构建了一个捆绑包,它只是我的数据库的REST Api层。

问题是我有另一个包,我希望它在数据库中执行一些更新。我不想重写代码来执行这个新包中的相同任务。

我可以从同一个应用程序中的另一个捆绑包向我的api发出请求吗?从这个新捆绑包中获取查询需要更长的时间吗?我关注性能和可扩展性。

举例说明我会写一个例子:

Bundle A包含一个REST api,它公开的资源之一是“Person”,允许GET,POST,PUT,DELETE。该资源映射到数据库表。

另一方面,有Bundle B,它必须运行一些任务,最后更新我的数据库中的一些用户。我不想将我的Person实体从api包复制到此包以执行更新。

在这种情况下你会做什么?

1 个答案:

答案 0 :(得分:1)

我认为您应该使用服务(依赖注入)在bundle之间进行通信。

  

Symfony2 Service Container Docs

如果您在一个捆绑包中注册服务,并且您将其命名为" myDataLayerService",则可以将其注入另一个捆绑包的服务中(与任何其他服务一样 - 请求服务,实体管理器,路由器等)或者,你可以很容易地在控制器中得到它:
$myDBLayer = $this->get("myDataLayerService");
然后调用在您的服务中创建的任何公共函数。

$myDBLayer->persistObjectToDatabase($veryNiceObject);

TL; DR:在一个捆绑包中注册的Symfony服务,可以在任何其他捆绑包中使用。