我想要一种使用 Zend Framework 2 创建模型工厂(TableGateway)的优雅方式。
我不想将所有依赖注入都放在文件 module.config.php 中。
我想要一种使用 Zend Framework 2 创建模型工厂(TableGateway)的优雅方式。
我不想将所有依赖注入都放在文件 module.config.php 中。
好吧,我也不喜欢这样,为了更好的可读性,我把它全部放到工厂类中。
模块.php
class Module implements \Zend\ModuleManager\Feature\ServiceProviderInterface
{
public function getServiceConfig()
{
return array(
'factories' => array(
'namespace-model-servicename' => 'Namespace\Factory\SomemodelServiceFactory'
)
);
}
}
命名空间\工厂\服务名称.php
<?php
namespace Namespace\Factory;
use Zend\ServiceManager\ServiceLocatorInterface;
use Zend\ServiceManager\FactoryInterface;
use Namespace\Model\SomemodelService;
class SomemodelServiceFactory implements FactoryInterface
{
/**
* Create service
*
* @param ServiceLocatorInterface $serviceLocator
* @return \Namespace\Service\SomemodelService
*/
public function createService(ServiceLocatorInterface $serviceLocator)
{
$service = new SomemodelService();
$service->setEntityManager($serviceLocator->get('Doctrine\ORM\EntityManager'));
return $service;
}
}
现在这是一个注入 Doctrine EntityManager 的 ServiceFactory 的示例。显然,您需要重构所有类和东西以满足您的需求,但基本上这是您将要运行的方法。