ZF3如何处理AbstractContoller中的getServiceLocator() - > get(' translator')

时间:2017-07-25 21:33:27

标签: php zend-framework zend-framework3

我的应用程序(ZF3)中有一个抽象控制器,它扩展了我的所有模块控制器。

我在这里调用我的基本翻译器,并且每个模块都应用翻译器,但是当从ZF3中删除getServiceLocator()时,我想知道我可以做些什么来创建一个$ this->翻译器扩展控制器。

这是我在ZF2中使用的:

$this->translator = $this->getServiceLocator()->get('translator');

我找到了这些文档,但这对我来说似乎是另一个目的。

https://zendframework.github.io/zend-mvc/migration/to-v2-7/#servicelocatoraware-initializers

1 个答案:

答案 0 :(得分:0)

有不同的方法可以解决这个问题。

首先考虑的解决方案是在每个控制器中注入服务定位器,而不是其他任何东西。 为了做到这一点,你需要通过构造函数注入它并更改工厂的控制器(工厂,如果有很多)。

当你这样做时,你只能注入翻译而不是容器(服务管理器)。

初始化程序确实是一种方法,但它们可能会在以后删除。我宁愿使用delegator。这样,您不必通过构造函数注入,但是您需要通过setter注入,这意味着您引入了时间耦合...