在zf2的实用程序类中getServiceLocator



我有一个通用的类,用于重用所有模块的函数。我把它放在

ApplicationServiceUtility.php 

现在我可以在控制器中创建一个对象

$utilObj = new Utility();

则调用我的函数为$utilObj->myFn();

一切正常。

但我不能得到getServiceLocator()函数在那里(内部myFn在Utility.php)。有什么办法可以解决这个问题吗?我需要那里的服务定位器,因为我必须获得配置数据,学说管理等。

我没有在module.php中配置getServiceConfig。

我在我的项目中有这种类。第一个选项是创建一个工厂,将其作为一个依赖项包含在你的serviceManager中。

然后在你的控制器(不推荐)或模块服务中,通过你的服务管理器注入或检索你的实用程序类,使用这个

$this->getServiceLocator()->get('ApplicationServiceUtilityClass')
第二个解决方案是:你的实用程序类是一个可以实现这个接口的服务:
ZendServiceManagerServiceLocatorAwareInterface;

并使用这些特征(注意你的PHP版本必须至少是> 5.4)

ZendServiceManagerServiceLocatorAwareTrait;

这个解决方案保证你在你的服务中,你可以在你的类中以任何你想要的方法使用$this->getServiceLocator()。因为Zend框架2提供的任何"感知"接口都是用初始化器设计的。

相关内容

  • 没有找到相关文章

最新更新