繁体   English   中英

zf2中的实用程序类中的getServiceLocator

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM