我的服务中的 Symfony 循环引用 - 如何重组?

Symfony circular reference in my services - how to restructure?

我有两个服务:OrderManagerCouponManagerOrderManager 依赖于 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();
    }