如何在抽象类中获取服务管理器


How to get ServiceManager in an abstract class

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

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

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

引用 ZF2 文档:

此外,在某些情况下,您可能希望

接收ServiceManager以延迟检索依赖项;因此,您可能希望实现ServiceLocatorAwareInterface并了解有关ServiceManager的API的更多详细信息。

请参阅 ZF2 快速入门 - 服务管理器。

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

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

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