weew / commander
简单的命令总线。
v2.2.1
2016-07-21 11:17 UTC
Requires
- weew/helpers-array: ^1.0
- weew/helpers-string: ^1.0.0
Requires (Dev)
- phpunit/phpunit: ^4.7
- satooshi/php-coveralls: ^0.6.1
README
目录
安装
composer require weew/commander
简介
Commander是一个简单的消息总线。它允许您注册命令处理程序并分发命令。使用这种抽象的主要原因是解耦组件和依赖关系。调用者永远不知道最终会是谁来处理命令。他所知道的是双方都必须满足的一系列合约。
命令
命令没有限制。您可以几乎使用任何东西作为命令。建议创建简单的传输/值对象并将其用作命令。命令基本上是调用者和处理者之间的合约。
注册命令处理程序
为了能够将命令分发到处理程序,Commander必须知道谁负责每个命令。这就是为什么您必须为每个命令注册一个处理程序。处理程序可以是可调用的,或者是一个实现handle($command)
方法的类/实例。
首先,让我们创建一个非常基本的命令、处理程序和结果。
class FooCommandHandler { public function handle($command) { return new FooResult(); } } class FooCommand { public function __construct($foo, $bar) {} } class FooResult {}
现在进行命令注册。
$commander = new Commander(); $commander->register(FooCommand::class, FooCommandHandler::class);
分发命令
在注册您的命令和处理程序后,您可以从应用程序的任何地方调用它们。
$result = $commander->dispatch(new FooCommand('foo', 'bar'));
现有容器集成
目前有一个针对weew/container容器的集成。请参阅weew/commander-container-aware。