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