设备/调度

一个兼容 HTTP Interop 的中间件调度器

2.0.0 2018-01-26 14:37 UTC

This package is auto-updated.

Last update: 2024-09-09 04:35:58 UTC


README

Latest Stable Version License Build Status Code Coverage Scrutinizer Code Quality

Equip 中的 HTTP Interop 兼容中间件调度器。尝试符合 PSR-1PSR-2PSR-4PSR-7PSR-15

受到 ircmaxwell 的 Tari 设计的极大影响。

更多信息,请参阅 文档

安装

composer require equip/dispatch

用法

MiddlewareCollection 是一个中间件的容器,作为入口点。它接受两个参数

  • 一个包含 $middleware 的数组,这些必须是服务器中间件的实例。
  • 一个可调用的 $default,它作为集合的终止器并返回一个空响应。

一旦集合准备就绪,就可以用服务器请求进行调度,并将返回的响应输出。

示例

use Equip\Dispatch\MiddlewareCollection;

// Any implementation of PSR-15 MiddlewareInterface
$middleware = [
    new FooMiddleware(),
    // ...
];

// Default handler for end of collection
$default = function (ServerRequestInterface $request) {
    // Any implementation of PSR-7 ResponseInterface
    return new Response();
};

$collection = new MiddlewareCollection($middleware);

// Any implementation of PSR-7 ServerRequestInterface
$request = ServerRequest::fromGlobals();
$response = $collection->dispatch($request, $default);

嵌套集合

MiddlewareCollection 还实现了 MiddlewareInterface 以允许集合嵌套

use Equip\Dispatch\MiddlewareCollection;

// Any implementation of PSR-15 MiddlewareInterface
$middleware = [
    new FooMiddleware(),

    // A nested collection
    new MiddlewareCollection(...),

    // More middleware
    new BarMiddleware(),
    // ...
];

$collection = new MiddlewareCollection($middleware);

// HTTP factories can also be used
$default = [$responseFactory, 'createResponse'];
$request = $serverRequestFactory->createRequest($_SERVER);

$response = $collection->dispatch($request, $default);