proyectotau / command-bus
仅用于测试目的的CommandBus模式的最小化实现
1.2.0
2022-03-21 21:10 UTC
Requires (Dev)
- phpunit/phpunit: ^7
This package is auto-updated.
Last update: 2024-09-22 02:43:52 UTC
README
仅用于测试目的的CommandBus模式的最小化实现
根据(远程记住)
https://tactician.thephpleague.com/
安装
在您的composer.json
中插入官方仓库
"repositories": [ { "type": "vcs", "url": "https://github.com/proyectotau/command-bus.git" } ],
通过Composer要求它
composer -vvv require proyectotau/command-bus:dev-master
用法
创建一个CommandHandler
类
class CommandHandler { function handler($cmd){ // run your task here // you can get public var from cmd if it is an object } }
创建一个CommandBus
类
$cmdbus = new CommandBus();
并将命令绑定到该命令处理器
$cmdbus->bind('MyCommand', $handler);
命令可以是一个带参数的对象
$cmdobj = new CommandObject(true, 1, []); $cmdbus->bind($cmdobj, $handler);
最后,dispatch
命令
$cmdbus->dispatch('MyCommand');
或
$cmdbus->dispatch($cmdobj);
因此,处理器方法将被调用,并将命令作为参数接收。如果是对象,可以获取构造函数的参数。让命令像这样成为一个对象
class CommandObject { public $param1; public $param2; public $param3; function __constructor($param1, $param2, $param3) { $this->param1 = $param1; $this->param2 = $param2; $this->param3 = $param3; } }
你可以挑选它们
function handler($cmd){ $this->param1 = $cmd->param1; $this->param2 = $cmd->param2; $this->param3 = $cmd->param3; }
测试
你可以这样运行测试
vendor/bin/phpunit --color --testdox tests/CommandBusTest.php