我想從控制器檢索的Zend我的模塊配置框架3. 我搜查,似乎在ZF2做到這一點的標準方法是使用獲取模塊配置在ZF3
$this->getServiceLocator()
訪問module.config.php
中的配置。 但是,這不適用於ZF3,因爲沒有getServiceLocator()
方法。
實現此目標的標準方法是什麼?
我想從控制器檢索的Zend我的模塊配置框架3. 我搜查,似乎在ZF2做到這一點的標準方法是使用獲取模塊配置在ZF3
$this->getServiceLocator()
訪問module.config.php
中的配置。 但是,這不適用於ZF3,因爲沒有getServiceLocator()
方法。
實現此目標的標準方法是什麼?
您需要通過服務管理器注入您的依賴關係。 基本上你需要創建2個類控制器和ControllerFactory這將創建具有所有依賴關係的控制器。
不知道你是否找到答案,因爲tasmaniski寫道有不同的解決方案。爲以防萬一,讓我分享一個會幫了我很多,當我開始與ZF3玩:
MyControllerFactory.php
<?php
namespace My\Namespace;
use Interop\Container\ContainerInterface;
use Zend\ServiceManager\Factory\FactoryInterface;
use DependencyNamespace\...\ControllerDependencyClass; // this is not a real one of course!
class MyControllerFactory implements FactoryInterface
{
/**
* @param ContainerInterface $container
* @param string $requestedName
* @param null|array $options
* @return AuthAdapter
*/
public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
{
// Get config.
$config = $container->get('configuration');
// Get what I'm interested in config.
$myStuff = $config['the-array-i-am-interested-in']
// Do something with it.
$controllerDepency = dummyFunction($myStuff);
/*...the rest of your code here... */
// Inject dependency.
return $controllerDepency;
}
}
MyController.php
<?php
namespace My\Namespace;
use Zend\Mvc\Controller\AbstractActionController;
use DependencyNamespace\...\DependencyClass;
class MyController extends AbstractActionController
{
private $controllerDepency;
public function __construct(DependencyClass $controllerDepency)
{
$this->controllerDepency = $controllerDepency;
}
/*...the rest of your class here... */
}
對此有很多解決方案..你可以分享你的代碼,這樣我可以更好地解釋嗎? – tasmaniski