codeinc/middleware-dispatcher

此包已被废弃,不再维护。未建议替代包。

Code Inc. PSR15 中间件分发器

2.2.0 2018-10-11 17:29 UTC

This package is auto-updated.

Last update: 2020-02-11 20:07:24 UTC


README

codeinc/middleware-dispatcher 是一个 PSR-15 中间件分发器。中间件分发器作为 PSR-15 的 RequestHandlerInterface 行为。它有两种形式,一个是可扩展的抽象类 AbstractMiddlewareDispatcher,另一个是最终的类 MiddlewareDispatcher

如果添加到分发器的中间件都无法处理请求,则会调用最终的请求处理器。默认情况下,此请求处理器为 DefaultFinalRequestHandler,它返回一个 NotFoundResponse

使用方法

<?php
use CodeInc\MiddlewareDispatcher\MiddlewareDispatcher;

// instantiating the dispatcher
$dispatcher = new MiddlewareDispatcher([
    new MyFirstMiddleware(),
    new MySecondMiddleware()
]);
$dispatcher->addMiddleware(new MyThirdMiddleware());

// handling the request 
// will return a NoResponseAvailable object if the request can not be processed by the middleware
// --> $psr7ServerRequest must be an object implementing ServerRequestInterface
$psr7Response = $dispatcher->handle($psr7ServerRequest); 

一个名为 MiddlewareIteratorDispatcher 的备用分发器允许将迭代器用作分发器的源。以下是一个使用 生成器 的示例。在这个例子中,中间件对象是即时实例化的。这避免了实例化未使用的中间件对象。如果第一个中间件能够生成有效的响应,则后续的中间件将不会实例化。

<?php
use CodeInc\MiddlewareDispatcher\MiddlewareIteratorDispatcher;

$dispatcher = new MiddlewareIteratorDispatcher(function():Generator {
    yield new MyFirstMiddleware();
    yield new MySecondMiddleware();
    yield new MyThirdMiddleware();
});
$psr7Response = $dispatcher->handle($psr7ServerRequest); 

安装

此库可通过 Packagist 获取,并可以使用 Composer 进行安装。

composer require codeinc/middleware-dispatcher

许可证

此库根据 MIT 许可证发布(见 LICENSE 文件)。