gpslab/middleware

用于在应用程序中使用中间件的基础设施

v1.1.0 2017-07-17 12:00 UTC

This package is auto-updated.

Last update: 2024-09-15 19:23:40 UTC


README

Latest Stable Version Total Downloads Build Status Coverage Status Scrutinizer Code Quality SensioLabs Insight StyleCI License

用于在应用程序中使用中间件的基础设施

Request delegate pipeline

安装

使用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 中的完整许可证。