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

Php Symfony:向同一应用程序中的另一个捆绑包发出请求以获取数据,php,symfony,architecture,soa,Php,Symfony,Architecture,Soa,我有一个dilema,我有一个Symfony2应用程序,在其中我构建了一个bundle,它只是我数据库的一个restapi层 问题是我有另一个包,我希望它在数据库中执行一些更新。我不想重写代码来执行这个新包中的相同任务 我可以从同一应用程序中的另一个捆绑包向我的api发出请求吗?这会比从这个新包中进行查询花费更长的时间吗?我关心的是性能和可伸缩性 为了举例说明,我将写一个例子: Bundle A包含一个restapi,它公开的资源之一是“Person”,它允许GET、POST、PUT和DELET

我有一个dilema,我有一个Symfony2应用程序,在其中我构建了一个bundle,它只是我数据库的一个restapi层

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

我可以从同一应用程序中的另一个捆绑包向我的api发出请求吗?这会比从这个新包中进行查询花费更长的时间吗?我关心的是性能和可伸缩性

为了举例说明,我将写一个例子:

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

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


在这种情况下,您会怎么做?

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


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

$myDBLayer->persistObjectToDatabase($veryNiceObject);
TL;DR:注册的Symfony服务在一个捆绑包中,可以在任何其他捆绑包中使用