Dependency injection Symfony autowire服务失败,因为两个服务基于同一类

Dependency injection Symfony autowire服务失败,因为两个服务基于同一类,dependency-injection,symfony-3.3,Dependency Injection,Symfony 3.3,我正在使用Symfony 3.3启动一个新项目。我很想使用新的自动配置/自动布线功能,但我遇到了一个“问题”,我不知道如何解决 我有以下来自外部捆绑包的服务定义: command_bus: class: Name\Space\To\MessageBusSupportingMiddleware ... event_bus: class: Name\Space\To\MessageBusSupportingMiddleware ... 这两个服务都基于相同的“Me

我正在使用Symfony 3.3启动一个新项目。我很想使用新的自动配置/自动布线功能,但我遇到了一个“问题”,我不知道如何解决

我有以下来自外部捆绑包的服务定义:

command_bus:
    class: Name\Space\To\MessageBusSupportingMiddleware
    ...

event_bus:
    class: Name\Space\To\MessageBusSupportingMiddleware
    ...
这两个服务都基于相同的“MessageBusSupportingMiddleware”类,但它们的意图当然完全不同

现在,我希望symfony3.3自动将“command_bus”服务注入我的控制器。但为此,我必须在构造函数中使用如下类:

public function __construct(
    MessageBusSupportingMiddleware $commandBus
){
    $this->commandBus = $commandBus;
}
但在这种情况下,Symfony会抱怨,因为它实际上找到了几个与该类相关的服务定义,因此无法知道应该提供哪个服务定义


你认为我如何处理这种情况?

我实际上找到了克服这种情况的方法

我在自己的项目中创建了两个类:

class CommandBus  extends MessageBusSupportingMiddleware
{
}

class EventBus  extends MessageBusSupportingMiddleware
{
}
它们的唯一目的是能够覆盖外部捆绑包中的默认服务定义,并使用不同的实现来自动关联它们。我的服务覆盖配置仅在
services.yml
文件中完成,如下所示:

services:

    command_bus:
        class: CoreBundle\Bus\CommandBus

    event_bus:
        class: CoreBundle\Bus\EventBus