Symfony 4-依赖注入的工作原理

问题描述

使用 Symfony 3.4 ,我们将服务称为:$container->get('service.name') 因此,请确保为我们的服务起个名字。
Symfony 4 中,我们通过class nameinterface直接在控制器中注入服务,如下所示:

public function someAction(HttpClientInterface $service){
   // do something here
}

所以让我困惑的是,我们正在注入一个接口,而symfony负责在控制器中调用正确的对象。
我的问题是:如果我有2个实现相同接口的服务:

class ClassA implements InterfaceX{}
class ClassB implements InterfaceX{}

在控制器中,我这样做:

public function someAction(InterfaceX $service){
   // do something here
}

调用哪个服务?

解决方法

是的,服务可以实现相同的接口,在您的控制器中,您需要注入正确的服务,如下所示:

public function someAction(ClassA $serviceA){
   // do something here
}

public function someOtherAction(ClassB $serviceB){
   // do something here
}

如果您需要同一类的多个方法中的相同服务,请在__construct上使用依赖注入

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...