Symfony:向同一应用程序中的另一个包发出请求以获取数据
Symfony: Issuing request to another bundle in same app to get data
我有点进退两难,我有一个 Symfony2 应用程序,我在其中构建了一个包,它只是我数据库的一个 REST Api 层。
问题是我有另一个包,我希望它在数据库中执行一些更新。我不想重写代码来在这个新包中执行相同的任务。
我可以从同一应用程序中的另一个包向我的 api 发出请求吗?它会比从这个新包中进行查询花费更长的时间吗?我关心性能和可伸缩性。
为了举例说明,我会写一个例子:
Bundle A 包含一个 REST api,它公开的资源之一是 "Person",它允许 GET、POST、PUT、DELETE。此资源映射到数据库 table.
另一方面,有 Bundle B,它必须 运行 一些任务并最终更新我数据库中的一些用户。我不想将我的个人实体从 api 包复制到这个包来执行更新。
遇到这种情况你会怎么做?
我认为您应该使用服务(依赖注入)在包之间进行通信。
如果您在一个包中注册服务,并将其命名为 "myDataLayerService",您可以将其注入另一个包的服务(与任何其他服务一样 - 请求服务、实体管理器、路由器等)或,你可以很容易地在控制器中得到它:
$myDBLayer = $this->get("myDataLayerService");
然后调用在您的服务中创建的任何 public 函数。
$myDBLayer->persistObjectToDatabase($veryNiceObject);
TL;DR: 在一个包中注册的 Symfony 服务,在任何其他包中都可用。
我有点进退两难,我有一个 Symfony2 应用程序,我在其中构建了一个包,它只是我数据库的一个 REST Api 层。
问题是我有另一个包,我希望它在数据库中执行一些更新。我不想重写代码来在这个新包中执行相同的任务。
我可以从同一应用程序中的另一个包向我的 api 发出请求吗?它会比从这个新包中进行查询花费更长的时间吗?我关心性能和可伸缩性。
为了举例说明,我会写一个例子:
Bundle A 包含一个 REST api,它公开的资源之一是 "Person",它允许 GET、POST、PUT、DELETE。此资源映射到数据库 table.
另一方面,有 Bundle B,它必须 运行 一些任务并最终更新我数据库中的一些用户。我不想将我的个人实体从 api 包复制到这个包来执行更新。
遇到这种情况你会怎么做?
我认为您应该使用服务(依赖注入)在包之间进行通信。
如果您在一个包中注册服务,并将其命名为 "myDataLayerService",您可以将其注入另一个包的服务(与任何其他服务一样 - 请求服务、实体管理器、路由器等)或,你可以很容易地在控制器中得到它:
$myDBLayer = $this->get("myDataLayerService");
然后调用在您的服务中创建的任何 public 函数。
$myDBLayer->persistObjectToDatabase($veryNiceObject);
TL;DR: 在一个包中注册的 Symfony 服务,在任何其他包中都可用。