如何在 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 ControllerIndexController($accountService);
            }
        )
    );
}
public function getServiceConfig()
{
    return array(
        'factories' => array(
            'account-service' => function ($serviceManages) {
                return new ServiceAccount;
            }
        )
    );
}

现在我有:

我应该把这个factory class放在哪里,也许放在一个Factory文件夹中?

有什么想法吗?

我通常把我的工厂放到../module/yourmodule/src/yourmodule/Factory

在您的../module/yourmodule/config/module.config.php中,您必须像这样配置您的service_manager:

'service_manager' => array(
   'factories' => array(
      'yourfactory' => 'yourmoduleFactoryyourfactory',
   ),
),

yourfactory.php然后,您必须插入工厂接口并设置服务定位器。完成此操作后,您应该能够以控制器,表单等的常规方式调用服务。

namespace ApplicationFactory;
use ZendServiceManagerFactoryInterface;
use ZendServiceManagerServiceLocatorInterface;
class yourfactory implements FactoryInterface
{
private $config;
private $serviceLocator;
public function createService(ServiceLocatorInterface $serviceLocator)
{
    return $servicelocator->get('YourService');
}

之后,您可以在yourfactory.php中定义函数。在控制器中,您可以调用类似$serviceManager->get('yourfactory')->yourfunction(yourarguments);

最新更新