【发布时间】:2017-07-30 06:58:38
【问题描述】:
我正在尝试访问控制器内的服务定位器对象,但无法执行此操作。
我尝试了在线帮助,但他们中的大多数都遵循ZF2的方法
以前zf2 中的 Servicelocator 访问是轻而易举的事,我只需要 $this->getServiceLocator();
我已尝试为我的控制器创建工厂类并在那里创建 createService 方法,但它说我也必须实现 __invoke() 方法。
我的目标是做这样的事情
public function getPropertyTable()
{
if (!$this->PropertyTable) {
$sm = $this->getServiceLocator();
$this->PropertyTable = $sm->get('Application\Model\PropertyTable');
}
return $this->PropertyTable;
}
谁能提供一个完整的步骤来实现这一点?
在提出这个问题之前,我已经尝试实现几乎所有与 Servicelocator 相关的答案,所以在将其标记为重复或其他内容之前请帮助我,忽略错别字
【问题讨论】:
-
在 ZF2 中,已确定在控制器中使用服务定位器是一种非常非常非常糟糕的糟糕做法。不可能/不建议在 ZF3 中再次使用该技巧
-
@Hooli 谢谢,我完全理解并同意你的观点,我知道这就是 ZF3 中服务管理器的整个流程发生变化的原因。但这就是我问这个问题的原因,我不知道如何在控制器内调用我的模型的函数。请把我看作一个正在学习这项技术的新手。我希望你能给我一个例子,我如何在 Controller 中调用模型函数。
标签: php zend-framework2 zend-framework3