模型工厂Zend 2

时间:2012-12-15 12:46:27

标签: zend-framework2

我希望通过使用Zend Framework 2来创建模型工厂(TableGateway)的优雅方式。

我不想将所有依赖注入放在文件module.config.php。

1 个答案:

答案 0 :(得分:0)

嗯,我也不喜欢这样,为了更好的可读性,我把它全部用于工厂课程。

<强> Module.php

class Module implements \Zend\ModuleManager\Feature\ServiceProviderInterface
{
    public function getServiceConfig()
    {
        return array(
            'factories' => array(
                'namespace-model-servicename' => 'Namespace\Factory\SomemodelServiceFactory'
            )
        );
    }
}

<强>命名空间\厂\ Servicename.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;
    }
}

现在这是一个注入Doctrines EntityManager的ServiceFactory的示例。显然你需要重构所有类和东西来满足你的需求,但基本上这就是你要运行的方法。