如何在抽象类中获取ServiceManager

时间:2014-11-21 16:09:16

标签: php doctrine-orm zend-framework2

我使用Zend Framework 2和Doctrine 2编写应用程序。我有两个月的两种技术经验。

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

1 个答案:

答案 0 :(得分:0)

您需要实施ServiceLocatorAwareInterface来延迟检索serviceManager

引用ZF2文件:

  

此外,在某些情况下,您可能希望将ServiceManager接收为延迟检索依赖项;因此,您可能希望实现ServiceLocatorAwareInterface并了解有关ServiceManager API的更多详细信息。

请参阅ZF2 Quick Start - service manager.

但说实话,您不应该在存储库类中使用任何服务。保持简单和干净只是为了检索数据。

当你调用你的存储库类时,你应该像这样传递用户:

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