how to create a factory in zend framework 2?

非 Y 不嫁゛ 提交于 2020-01-21 04:47:08

问题


in my Module.php i have the fallowing methods that i would like to move them in a factory class so that i wont clutter the 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;
            }
        )
    );
}

right now i have:

and where shall i put this factory class, maybe in a Factory folder?

any ideas?


回答1:


I usually put my factories into ../module/yourmodule/src/yourmodule/Factory.

in your ../module/yourmodule/config/module.config.php you then have to configure your service_manager like so:

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

in yourfactory.php You then have to implent the FactoryInterface and set the service locator. Once you done this you should be able to call the service the usual way for controllers, forms etc.

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

After that you can just define functions in your yourfactory.php. In your Controller you call functions like so $serviceManager->get('yourfactory')->yourfunction(yourarguments);



来源:https://stackoverflow.com/questions/18865569/how-to-create-a-factory-in-zend-framework-2

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!