【发布时间】:2013-05-23 12:00:30
【问题描述】:
我的应用程序中的大多数控制器都需要能够访问当前登录用户的“帐户”,因此我尝试将其注入每个控制器类。这样做的方法似乎是为可以提供所有依赖项的控制器类创建一个抽象工厂。因此,我创建了工厂类,其中包含执行此操作的方法:
public function createServiceWithName(ServiceLocatorInterface $serviceLocator, $name, $requestedName)
{
$controllerClassName = $requestedName.'Controller';
$controller = new $controllerClassName();
$account = $serviceLocator->get('Account');
$controller->setAccount($account);
return $controller;
}
但是$serviceLocator->get('Account'); 行给了我错误:
Zend\Mvc\Controller\ControllerManager::get 无法获取或创建 Account 实例
从控制器操作中调用$this->getServiceLocator()->get('Account') 工作正常,那么为什么从控制器工厂内调用不能工作?
或者有没有更好的方法来实现这一点?
【问题讨论】:
标签: zend-framework2 abstract-factory