weew/commander

简单的命令总线。

v2.2.1 2016-07-21 11:17 UTC

This package is not auto-updated.

Last update: 2024-09-14 19:36:41 UTC


README

Build Status Code Quality Test Coverage Version Licence

目录

安装

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