我的服务中的 Symfony 循环引用 - 如何重组?
Symfony circular reference in my services - how to restructure?
我有两个服务:OrderManager
和 CouponManager
。 OrderManager
依赖于 CouponManager
。这很好用。
我正在尝试向 CouponManager
添加功能,它依赖于 OrderManager
中的方法。但是,我无法在不出现循环引用错误的情况下将 OrderManager
注入 CouponManager
。
例如:
订单经理:
public function foo() {
return $this->couponManager->bar();
}
优惠券管理器:
public function fubar() {
if($this->something()) {
return $this->orderManager->barfu();
}
}
我应该如何构建它以便每个服务都可以访问另一个?
仅在依赖容器的方法中注入服务容器并直接从容器获取所需服务。
在服务配置中:
services:
...
arguments: [@service_container]
并且在服务中class:
public function __construct(ContainerInterface $container)
{
$this->container = $container;
}
经理调用示例:
Class OrderManager
...
public function foo()
{
$this->container->get('project.bundle.manager.coupon_manager')->bar();
}
我有两个服务:OrderManager
和 CouponManager
。 OrderManager
依赖于 CouponManager
。这很好用。
我正在尝试向 CouponManager
添加功能,它依赖于 OrderManager
中的方法。但是,我无法在不出现循环引用错误的情况下将 OrderManager
注入 CouponManager
。
例如:
订单经理:
public function foo() {
return $this->couponManager->bar();
}
优惠券管理器:
public function fubar() {
if($this->something()) {
return $this->orderManager->barfu();
}
}
我应该如何构建它以便每个服务都可以访问另一个?
仅在依赖容器的方法中注入服务容器并直接从容器获取所需服务。
在服务配置中:
services:
...
arguments: [@service_container]
并且在服务中class:
public function __construct(ContainerInterface $container)
{
$this->container = $container;
}
经理调用示例:
Class OrderManager
...
public function foo()
{
$this->container->get('project.bundle.manager.coupon_manager')->bar();
}