pechenin/broker-action

本包最新版本(dev-master)没有可用的许可证信息。

dev-master 2020-10-15 08:46 UTC

README

安装

将bundle添加到config/bundles.php

BrokerAction\BrokerActionBundle::class => ['all' => true]

在config/packages文件夹中创建broker_action.yaml文件

broker_action.yaml示例

broker_action:
  mapping:
      - { path: 'some.path', action: 'App\Actions\SomeAction' }
      - { path: 'some.path1', action: 'App\Actions\SomeAnotherAction' }

动作创建

创建一个实现 BrokerAction\Framework\ActionInterface 的类。

示例

use BrokerAction\DTO\ActionResponse;
use BrokerAction\DTO\Error;
use BrokerAction\Framework\ActionInterface;

class SomeAction implements ActionInterface
{
    public function run($data): ActionResponse
    {
        $response = new ActionResponse();
        try {
            echo $data;
            $response->setData($data);
        } catch (\Exception $exception) {
            $response->setError(new Error($exception->getMessage()));
        }

        return $response;
    }
}

查找路由并触发动作

要触发动作,您应该创建 TransactionMessageDTO 对象并将其传递给 BrokerAction\Framework\Routerroute 方法。

示例

use BrokerAction\Framework\Router;
use BrokerAction\DTO\TransactionMessage\TransactionMessageDTO;

class FooClass {
    
    private $router;
    
    public function (Router $router) {
        $this->router = $router;
    }
    
    public function bar() {
        $json = '{
                     "path": "some.path",
                     "payload": {
                         "acc_id": 1
                     }
                 }';
        $message = TransactionMessageDTO::fromJson($json);
        $reponse =$this->router->route($message);
    }
}