在我的架构中,我这样做如下。首先:我创建一个服务:
class Module
{
public function getServiceConfig()
{
return array(
'factories' => array(
'my-service-name' => 'MyNamespace\Factory\MyServiceFactory'
)
);
}
}
然后我创建ServiceFactory。这将是处理所有依赖项的地方。
<?php
namespace MyNamespace\Factory;
use Zend\ServiceManager\ServiceLocatorInterface;
use Zend\ServiceManager\FactoryInterface;
use MyNamespace\Service\SomeService;
class MyServiceFactory implements FactoryInterface
{
/**
* Create service
*
* @param ServiceLocatorInterface $serviceLocator
* @return \MyNamespace\Service\SomeService
*/
public function createService(ServiceLocatorInterface $serviceLocator)
{
$service = new SomeService();
$service->setEntityManager($serviceLocator->get('Doctrine\ORM\EntityManager'));
return $service;
}
}
MyService-Class 甚至可以有更多的依赖关系,在我的例子中,由于它们实现的接口,它们会自动注入。您可以在此处查看示例。然后,特定的 EntityService 将只需要一个定义存储库的函数,就像这里的示例一样。
可能还会建议您阅读Rob Allens 对 ServiceManager 配置键的介绍。具体阅读“初始化程序”部分,我想这是您主要关心的问题?
我希望这涵盖了您的问题。