如何在抽象类中获取ServiceManager

问题描述:

我使用Zend Framework 2和Doctrine 2编写应用程序。我对这两种技术都有2个月的使用经验。如何在抽象类中获取ServiceManager

我使用Doctrine知识库文档方案。我需要访问存储库类中的当前用户。我不知道如何获取存储库中的serviceManager实例。我阅读了很多文章,但仍然无法理解依赖注入,我需要在ZF2中管理服务。 有人可以解释我如何将服务注入抽象类(如基础知识库)吗?

+0

为什么需要整个的ServiceManager?此外,也许你需要创建一个单独的服务来管理你对用户的需求。 您也可以将用户注入存储库方法。 – SenseException 2014-11-21 20:25:44

您需要执行ServiceLocatorAwareInterface来懒惰地检索serviceManager。从ZF2文件

报价:

此外,也有一些情况下,您可能想收到的ServiceManager懒,检索依赖;因此,您可能需要实现ServiceLocatorAwareInterface并了解有关ServiceManager的API的更多详细信息。

ZF2 Quick Start - service manager.

不过说实话,你不应该你的资料库类中使用任何服务。保持简单和干净只是为了检索数据。

当你骂你的资料库类,你应该通过像这样的用户:

$data = $this->getEntityManager()->getRepository('Common\Entity\User')->myMethod($user);