【问题标题】:getServiceLocator in utility class in zf2zf2 实用程序类中的 getServiceLocator
【发布时间】:2015-12-25 11:47:47
【问题描述】:

我有一个通用类用于重用所有模块的功能。我把它放在了

Application\Service\Utility.php 

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

$utilObj = new Utility();

然后将我的函数称为$utilObj->myFn();

一切正常。

但我无法在那里获得getServiceLocator() 函数(在Utility.php 中的myFn 内)。有什么办法可以解决这个问题。 我需要服务定位器,因为我必须获取配置数据、原则管理等。

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

【问题讨论】:

标签: php zend-framework zend-framework2 service-locator


【解决方案1】:

我的项目中有这样的课程。 您的第一个选择是创建一个工厂,其中包含您的 serviceManager 作为依赖项。

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

$this->getServiceLocator()->get('Application\Service\UtilityClass')

第二种解决方案是:您的实用程序类是可以实现此接口的服务:

Zend\ServiceManager\ServiceLocatorAwareInterface;

并使用此特征(注意您的 PHP 版本必须至少 > 5.4)

Zend\ServiceManager\ServiceLocatorAwareTrait;

此解决方案向您保证,您可以在课堂上以任何您想要的方法使用$this->getServiceLocator()。因为 Zend 框架 2 提供的任何“感知”接口都设计有初始化程序。它会自动为您添加一些依赖项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 2013-02-01
    • 2013-04-03
    • 1970-01-01
    • 2017-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多