我感兴趣的是,是否可以注入自定义服务,实现我的界面。从symfony doc来看,这是不可能的。为了正确理解我,让我给你一个简单的例子:
Les的想象我们有一个控制器C1有两个动作:a1Action和a2Action。有一个实现接口IS的服务S1。好。 在a2Action中,我打算使用这项服务。它是在“app.s1.service”名称下注册的,因此,正如我们所知,我可以使用以下命令获得此服务:
$this->get('app.s1.service');
使用某种第三方捆绑包,例如di-extra-bundle 我们可以通过其他方式做到这一点。无论如何。困扰我的是,我想确定,如果有一天,某人创建一个新的服务S2并希望在aAAction中更改我的服务,它将不会破坏整个应用程序,因为在S2中没有适当的方法,实际上是新开发人员没有实现我的界面。而且我不想将此服务注入构造函数中,因为在a1Action中我不使用它。就像在Laravel中一样,我希望有可能在我的a2Action中注入inteface并获得适当的实现。 我正在玩ControllerResolver,但对于这类问题看起来很复杂。而且我想避免在我的行为中进行额外检查,例如:
$s2 = $this->get('app.s2.service')
if (!$s2 instanceof IS) {
// ... bla bla bla
}
提前致谢。