Symfony 自动装配服务失败,因为两个服务基于相同的 class
Symfony autowire services failing because two services are based on the same class
我正在使用 Symfony 3.3 开始一个新项目。我想使用新的 autoconfigure/autowiring 功能,但我 运行 陷入 "issue" 我不知道如何解决。
我有以下来自外部包的服务定义:
command_bus:
class: Name\Space\To\MessageBusSupportingMiddleware
...
event_bus:
class: Name\Space\To\MessageBusSupportingMiddleware
...
两种服务都基于相同的 "MessageBusSupportingMiddleware" class,但它们的意图当然完全不同。
现在我希望 Symfony 3.3 自动将 "command_bus" 服务注入我的控制器。但是为此,我必须像这样在构造函数中使用 class:
public function __construct(
MessageBusSupportingMiddleware $commandBus
){
$this->commandBus = $commandBus;
}
虽然在这种情况下,Symfony 会抱怨,因为它实际上找到了几个与此相关的服务定义class,所以它不知道要提供哪个。
你认为我该如何处理这种情况?
我真的找到了克服这种情况的方法。
我在自己的项目中创建了两个类:
class CommandBus extends MessageBusSupportingMiddleware
{
}
class EventBus extends MessageBusSupportingMiddleware
{
}
它们的唯一目的是能够覆盖来自外部包的默认服务定义,并使用不同的实现来自动装配它们。我的服务覆盖配置只是在 services.yml
文件中完成,如下所示:
services:
command_bus:
class: CoreBundle\Bus\CommandBus
event_bus:
class: CoreBundle\Bus\EventBus
我正在使用 Symfony 3.3 开始一个新项目。我想使用新的 autoconfigure/autowiring 功能,但我 运行 陷入 "issue" 我不知道如何解决。
我有以下来自外部包的服务定义:
command_bus:
class: Name\Space\To\MessageBusSupportingMiddleware
...
event_bus:
class: Name\Space\To\MessageBusSupportingMiddleware
...
两种服务都基于相同的 "MessageBusSupportingMiddleware" class,但它们的意图当然完全不同。
现在我希望 Symfony 3.3 自动将 "command_bus" 服务注入我的控制器。但是为此,我必须像这样在构造函数中使用 class:
public function __construct(
MessageBusSupportingMiddleware $commandBus
){
$this->commandBus = $commandBus;
}
虽然在这种情况下,Symfony 会抱怨,因为它实际上找到了几个与此相关的服务定义class,所以它不知道要提供哪个。
你认为我该如何处理这种情况?
我真的找到了克服这种情况的方法。
我在自己的项目中创建了两个类:
class CommandBus extends MessageBusSupportingMiddleware
{
}
class EventBus extends MessageBusSupportingMiddleware
{
}
它们的唯一目的是能够覆盖来自外部包的默认服务定义,并使用不同的实现来自动装配它们。我的服务覆盖配置只是在 services.yml
文件中完成,如下所示:
services:
command_bus:
class: CoreBundle\Bus\CommandBus
event_bus:
class: CoreBundle\Bus\EventBus