2012-12-15 25 views
-1

我想通过使用Zend Framework 2示范工厂的Zend 2

我不希望把所有的依赖注入的文件module.config.php创建一个工厂的模型(TableGateway)的一种优雅的方式。

+0

欢迎来到SO。如果你问一些问题,那么提供一些你迄今为止所做的事情的代码总是一个好主意。在这个例子中,提供你发现不需要的代码(无论出于何种原因)并寻求替代方案。双线不太适合Q&A。我的回答是基于你想做什么的假设(我并不太确定) – Sam

回答

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; 
    } 
} 

现在这是一个服务工厂内喷射教义的EntityManager的一个例子。显然你需要重构所有的类和东西来满足你的需求,但基本上这是你将要运行的方法。