commander / core
容器互操作感知命令总线
1.0.0
2016-12-01 20:40 UTC
Requires
Requires (Dev)
- phpunit/phpunit: ^4.8
This package is auto-updated.
Last update: 2024-08-29 04:32:38 UTC
README
微服务命令/事件框架
Commander将HTTP请求映射到命令处理器,并监听框架事件。
如何使用
-
编写命令处理器
- 确保触发
CompletedEvent
- 确保触发
ErrorEvent
- 确保触发
-
告诉commander处理器的端点
-
处理你的事件
用例
目前我们仅支持JSON API。
简单示例
$commander = new Commander(); $this->commander->get('/user/{id}', 'user.cache.get', SimpleGetUserHandler::class); $commander->run(); //In SimpleGetUserHandler class SimpleGetUserHandler extends Handler { /** * @param CommandInterface $command */ public function handle(CommandInterface $command) { $this->eventBus->notify(CompletedEvent::makeEvent(['id' => '1'])); //fill in the user info } }
为什么??
- CQRS!
- 更少的样板代码。
- 更高的可测试性。
- 没有控制器或控制器操作...
- 更好的资源使用
框架事件
你可以订阅以下框架事件
-
Framework.Complete
- 当响应完成时触发此事件
- 负载:
用户定义
-
Framework.Error
- 如果某处发生错误,将触发此事件
- 负载:
用户定义
或框架错误为["message" => "..."]
-
Framework.CommandBus.Handle
- 当命令处理器即将执行时触发此事件
- 负载:
[CommandKey]
-
Framework.Invoke
- 当命令即将被发送到命令总线时触发此事件
- 负载:
["commandKey" => "", "commandClass" => ""]
-
Framework.EventBus.Notify
- 当事件即将发送到事件总线时触发此事件
- 不会传播Framework.EventBus.Notify的
- 负载:
callable... [$object, "method"]
待办事项
- 事件负载
- JsonPayload
- TextPayload
- XMLPayload
贡献者
- Glenn Eggleton geggleto@gmail.com