gpslab / middleware
用于在应用程序中使用中间件的基础设施
v1.1.0
2017-07-17 12:00 UTC
Requires
- php: >=5.5.0
Requires (Dev)
- gpslab/cqrs: ~1.0
- gpslab/domain-event: ~2.0
- phpunit/phpunit: ~4.8
- psr/container: ~1.0
- psr/log: ~1.0
- satooshi/php-coveralls: ^1.0
- scrutinizer/ocular: ~1.3
- symfony/dependency-injection: ~2.3|~3.0
- symfony/validator: ~2.3|~3.0
This package is auto-updated.
Last update: 2024-09-15 19:23:40 UTC
README
用于在应用程序中使用中间件的基础设施
安装
使用Composer非常简单,运行
composer require gpslab/middleware
中间件链
MiddlewareChain
包含中间件 (Middleware
),并按顺序通过链路应用它们到消息。
有三种链的实现,但你可以自己制作。
DirectBindingMiddlewareChain
- 直接绑定;ContainerMiddlewareChain
- PSR-11 容器;SymfonyContainerMiddlewareChain
- Symfony 容器 (Symfony 3.3 实现 PSR-11).
处理命令 (CQRS)
在 CQRS 中使用中间件的示例。
// middleware chain $chain = new DirectBindingMiddlewareChain(); // add logger middleware $chain->append(new LoggerMiddleware($logger)); // add validator middleware $chain->append(new ValidatorMiddleware($validator)); // add middleware for handle command from origin command bus $chain->append(new CommandMiddleware($command_bus)); // configure command bus $bus = new MiddlewareCommandBus($chain); // handle command try { $bus->handle($my_command); } catch(InvalidMessageException $e) { // show validation errors var_dump($e->getMessages()); }
处理查询 (CQRS)
在 CQRS 中使用中间件的示例。
// middleware chain $chain = new DirectBindingMiddlewareChain(); // add logger middleware $chain->append(new LoggerMiddleware($logger)); // add validator middleware $chain->append(new ValidatorMiddleware($validator)); // add middleware for handle query from origin query bus $chain->append(new QueryMiddleware($query_bus)); // configure query bus $bus = new MiddlewareQueryBus($chain); // handle query try { $bus->handle($my_query); } catch (InvalidMessageException $e) { // show validation errors var_dump($e->getMessages()); }
处理领域事件
处理 领域事件 的中间件示例。
// middleware chain $chain = new DirectBindingMiddlewareChain(); // add logger middleware $chain->append(new LoggerMiddleware($logger)); // add middleware for handle event from origin domain event bus $chain->append(new DomainEventMiddleware($domain_event_bus)); // configure domain event bus $bus = new MiddlewareDomainEventBus($chain); // publish domain event $bus->publish($my_event);
许可证
此包在 MIT 许可证 下。请参阅文件 LICENSE 中的完整许可证。