proyectotau/command-bus

仅用于测试目的的CommandBus模式的最小化实现

1.2.0 2022-03-21 21:10 UTC

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