簡體   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