如何解决Symfony 4-依赖注入的工作原理
使用 Symfony 3.4 ,我们将服务称为:$container->get('service.name')
因此,请确保为我们的服务起个名字。
在 Symfony 4 中,我们通过class name
或interface
直接在控制器中注入服务,如下所示:
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上使用依赖注入
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。