codeinc / middleware-dispatcher
此包已被废弃,不再维护。未建议替代包。
Code Inc. PSR15 中间件分发器
2.2.0
2018-10-11 17:29 UTC
Requires
- php: >=7.1
- codeinc/collection-interface: ^1.1
- codeinc/psr7-responses: ^2
- psr/http-server-middleware: ^1.0
Requires (Dev)
- phpunit/phpunit: ^7
Suggests
- codeinc/psr7-response-sender: A PSR-7 response sender
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
文件)。