colossal / colossal-middleware-queue
一个PSR-15中间件,允许将多个其他PSR-15中间件视为单一实体。
v1.0.2
2023-11-05 06:48 UTC
Requires
- php: ^8.0
- psr/http-server-handler: ^1.0
- psr/http-server-middleware: ^1.0
Requires (Dev)
- phpstan/phpstan: ^1.9
- squizlabs/php_codesniffer: ^3.7
README
一个PSR-15中间件,允许将多个其他PSR-15中间件视为单一实体。
用法
namespace Dummy; use Psr\Http\Message\{ ResponseInterface, ServerRequestInterface }; use Psr\Http\Server\{ MiddlewareInterface, RequestHandlerInterface }; class DummyMiddlewareA { public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface { echo 'A'; return $handler->handle($request); } } class DummyMiddlewareB { public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface { echo 'B'; return $handler->handle($request); } } class DummyHandler { public function handle(ServerRequestInterface $request): ResponseInterface { echo 'Handler'; // Return a ResponseInterface } }
// ---------------------------------------------------------------------------- // // Creating and using the MiddlewareQueue is trivial. // // ---------------------------------------------------------------------------- // use Colossal\MiddlewareQueue\MiddlewareQueue; use Dummy\{ DummyMiddlewareA, DummyMiddlewareB, DummyHandler }; $dummyMiddlewareA = new DummyMiddlewareA(); $dummyMiddlewareB = new DummyMiddlewareB(); $middlewareQueue = new MiddlewareQueue(); $middlewareQueue->enqueue($dummyMiddlewareA); $middlewareQueue->enqueue($dummyMiddlewareB); // ---------------------------------------------------------------------------- // // The resulting MiddlewareQueue can now be used as a single middleware. // // A call to process will now do the following (in order): // // - Call $dummyMiddlewareA->process() passing the request passed to // // $middlewareQueue->process(). // // - Call $dummyMiddlewareB->process() passing the request passed to // // $middlewareQueue->process(). // // - Call RequestHandlerInterface::handle() on the handler passed to // // $middlewareInterface->process(). // // ---------------------------------------------------------------------------- // $middlewareQueue->process($request, $dummyHandler); // Prints: // A // B // Handler
开发技巧
运行PHPStan代码质量分析
使用以下命令运行PHPStan代码质量分析
>> .\vendor\bin\phpstan --configuration=phpstan.neon
运行PHP Code Sniffer代码风格分析
使用以下命令运行PHP Code Sniffer代码风格分析
>> .\vendor\bin\phpcs --standard=phpcs.xml src
要自动解决PHP Code Sniffer找到的问题,请运行以下命令
>> .\vendor\bin\phpcbf --standard=phpcs.xml src