如何在抽象类中获取ServiceManager
问题描述:
我使用Zend Framework 2和Doctrine 2编写应用程序。我对这两种技术都有2个月的使用经验。如何在抽象类中获取ServiceManager
我使用Doctrine知识库文档方案。我需要访问存储库类中的当前用户。我不知道如何获取存储库中的serviceManager实例。我阅读了很多文章,但仍然无法理解依赖注入,我需要在ZF2中管理服务。 有人可以解释我如何将服务注入抽象类(如基础知识库)吗?
答
您需要执行ServiceLocatorAwareInterface
来懒惰地检索serviceManager
。从ZF2文件
报价:
此外,也有一些情况下,您可能想收到的ServiceManager懒,检索依赖;因此,您可能需要实现ServiceLocatorAwareInterface并了解有关ServiceManager的API的更多详细信息。
见ZF2 Quick Start - service manager.
不过说实话,你不应该你的资料库类中使用任何服务。保持简单和干净只是为了检索数据。
当你骂你的资料库类,你应该通过像这样的用户:
$data = $this->getEntityManager()->getRepository('Common\Entity\User')->myMethod($user);
为什么需要整个的ServiceManager?此外,也许你需要创建一个单独的服务来管理你对用户的需求。 您也可以将用户注入存储库方法。 – SenseException 2014-11-21 20:25:44