lezhnev74 / prooph-direct-router
v1.0.3
2017-04-15 09:54 UTC
Requires
- php: ^7.1
- prooph/service-bus: ^6.0
- psr/container: ^1.0
Requires (Dev)
- php-di/php-di: ^5.4
- phpunit/phpunit: ^6.0
This package is auto-updated.
Last update: 2024-08-29 04:25:32 UTC
README
将命令路由到其处理程序
命令会被路由到具有相同名称并在同一命名空间下添加“Handler”的处理器
namespace Some\Space; // your command class Command {} // your command handler class CommandHandler { function __invoke(Command $cmd) {...} }
优势
通过使用约定(隐式路由),您可以轻松地添加命令或查询而无需不断更新配置文件。只需将这两个文件放在同一文件夹中并遵循命名约定即可。
- 处理器类必须与命令名称完全一致,并在末尾添加
Handler
- 命令和处理器必须位于同一命名空间下
一个方便的工具 :)
安装
composer require lezhnev74/prooph-direct-router
配置
如果您在项目中使用配置文件,请访问您的 prooph.php
配置文件并更新“service_bus.command_bus.router.type”字段。如果您手动设置了消息总线,请向下滚动到“用法”部分。
//... 'service_bus' => [ 'command_bus' => [ 'router' => [ 'routes' => [ // list of commands with corresponding command handler ], 'type' => \DirectRouter\DirectRouter::class ], ], //…
用法
此包使用依赖容器定位给定命令的处理程序,因此您需要安装某些容器包(支持 ContainerInterface)
// // Manual message bus setup // 1. Prepare router $router = new DirectRouter(); $router->attachToMessageBus($commandBus); // 2. Add service locator (to instantiate the handler). $container is your implementation of PSR-11 ContainerInterface $locator = new ServiceLocatorPlugin($container); $locator->attachToMessageBus($bus); // // Dispatch command // $command = new \Some\Space\Command(...); $commandBus->dispatch($command);