[英]getServiceLocator in utility class in zf2
我有一个用于重用所有模块功能的通用类。 我把它放进去了
Application\Service\Utility.php
现在我可以在控制器中创建一个对象
$utilObj = new Utility();
然后将我的函数称为$utilObj->myFn();
一切正常。
但是我不能在那里获得getServiceLocator()
函数(在Utility.php中的myFn内部)。 有什么办法可以解决这个问题。 我在那里需要服务定位器,因为我必须获取配置数据,原则管理等。
我尚未在module.php中配置getServiceConfig。
我的项目中有此类课程。 您要选择的第一个选择是创建一个工厂,其中包括您的serviceManager。
然后在您的控制器(不推荐使用)或模块服务中通过此服务管理器注入或检索实用程序类
$this->getServiceLocator()->get('Application\Service\UtilityClass')
第二种解决方案是:您的实用程序类是可以实现此接口的服务:
Zend\ServiceManager\ServiceLocatorAwareInterface;
并使用此特征(注意您的PHP版本必须至少> 5.4)
Zend\ServiceManager\ServiceLocatorAwareTrait;
该解决方案向您保证您的服务可以在类中以任何想要的方法使用$this->getServiceLocator()
。 因为Zend框架2提供的任何“感知”接口都是使用初始化程序设计的。 它会自动为您添加一些依赖关系。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.