как создать завод в zend framework 2?

в моем Module.php меня есть методы обработки, которые я хотел бы переместить их в factory class чтобы я не загромождал Module class :

 public function getControllerConfig() { return array( 'factories' => array( 'account-index' => function ($controllerManager) { $serviceManager = $controllerManager->getServiceLocator(); $accountService = $serviceManager->get('account-service'); return new Controller\IndexController($accountService); } ) ); } public function getServiceConfig() { return array( 'factories' => array( 'account-service' => function ($serviceManages) { return new Service\Account; } ) ); } 

прямо сейчас у меня есть:

и где я должен поставить этот factory class , может быть, в папке Factory ?

есть идеи?

Обычно я помещаю свои фабрики в ../module/yourmodule/src/yourmodule/Factory .

в вашем ../module/yourmodule/config/module.config.php вам нужно настроить свой service_manager следующим образом:

 'service_manager' => array( 'factories' => array( 'yourfactory' => 'yourmodule\Factory\yourfactory', ), ), 

в yourfactory.php вам необходимо внедрить FactoryInterface и установить локатор службы. После того, как вы это сделаете, вы сможете называть услугу обычным способом для контроллеров, форм и т. Д.

 namespace Application\Factory; use Zend\ServiceManager\FactoryInterface; use Zend\ServiceManager\ServiceLocatorInterface; class yourfactory implements FactoryInterface { private $config; private $serviceLocator; public function createService(ServiceLocatorInterface $serviceLocator) { return $servicelocator->get('Your\Service'); } 

После этого вы можете просто определить функции в своем yourfactory.php . В вашем контроллере вы вызываете такие функции, как $serviceManager->get('yourfactory')->yourfunction(yourarguments);