malocher/zf2-cqrs-module

Zend Framework 2 的 PHP CQRS + Service Bus 集成

v1.0 2013-12-10 18:44 UTC

This package is not auto-updated.

Last update: 2024-09-24 00:56:57 UTC


README

Zend Framework 2 模块,集成了 Malocher CQRS + Service Bus

Build Status

安装

MalocherCqrsModule 的安装使用 composer。有关 composer 文档,请参阅 getcomposer.org。将以下要求添加到您的 composer.json 中

"malocher/zf2-cqrs-module" : "1.*"

然后将 MalocherCqrsModule 添加到您的 `config/application.config.php``

不使用 composer 的安装不受官方支持,并且需要您安装并自动加载在 composer.json 中指定的依赖项。

设置

使用您的模块或应用程序配置设置 CQRS 系统。将所有 CQRS 选项放在 cqrs 键下。

  'cqrs' => array(
        'adapters' => array(
            'Malocher\Cqrs\Adapter\ArrayMapAdapter' => array(
                'buses' => array(
                    'My\Bus\DomainBus' => array(
                        'My\Command\AddEntityCommand' => array(
                            'alias'  => 'my_add_entity_command_handler',
                            'method' => 'addEntity' 
                        ),
                    ),
                ),
            ),
        ),
    ),
    'service_manager' => array(
        'invokables' => array(
            'my_add_entity_command_handler' => 'My\Repository\EntityRepository',
        ),
    ),

ZF2 ServiceManager 作为处理器和事件监听器加载器。这意味着,您可以使用 ServiceManager 别名将您的命令、查询和事件传递到您的存储库、服务以及您在应用程序中使用的任何东西。

##用法

您可以从 ServiceManager 中请求 Malocher CQRS 网关。CQRS 和 Service Bus 系统的整个设置都在后台完成。以下是一个简单的示例,它在一个控制器中从 DomainBus 调用 AddEntityCommand

<?php
namespace My\Controller;

use Zend\Mvc\Controller\AbstractActionController;
use My\Command\AddEntityCommand;
use My\Bus\DomainBus;

class MyController extends AbstractActionController {

  public function addEntityAction() {
  
    $entityName = $this->getEvent()->getRouteMatch()->getParam('entityname');
    
    $addEntityCommand = new AddEntityCommand();
    
    $addEntityCommand->setName($entityName);
    
    $this->getServiceLocator()
      ->get('malocher.cqrs.gate')
      ->getBus(DomainBus::NAME)
      ->invokeCommand($addEntityCommand);
  }
}

示例应用程序

您可以在 malocher/zf2-cqrs-sample 上找到带有注释源代码的示例应用程序