-1

我想要一种使用 Zend Framework 2 创建模型工厂(TableGateway)的优雅方式。

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

4

1 回答 1

0

好吧,我也不喜欢这样,为了更好的可读性,我把它全部放到工厂类中。

模块.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 的示例。显然,您需要重构所有类和东西以满足您的需求,但基本上这是您将要运行的方法。

于 2012-12-15T13:52:14.390 回答