Minimalist PSR-15 middleware based request handler (dispatcher).
Install via Composer:
$ composer require jerowork/middleware-request-handler
Use with a PSR-7 request implementation, like Zend Diactoros.
useJerowork\MiddlewareDispatcher\Middleware\FinalResponseMiddleware;
useJerowork\MiddlewareDispatcher\MiddlewareRequestHandler;
useZend\Diactoros\Response;
useZend\Diactoros\Response\SapiEmitter;
useZend\Diactoros\ServerRequestFactory;
// Setup a list of PSR-15 middlewares$middlewares = [
newSomeMiddleware(),
newAnotherMiddleware()
];
// Setup request handler$handler = newMiddlewareRequestHandler($middlewares);
// Add other middlewares after construct$handler->addMiddleware(
newThirdMiddleware(),
newFourthMiddleware()
);
// Add final reversal order middleware$handler->addMiddleware(newFinalResponseMiddleware(newResponse());
// Handle a PSR-7 server request to response by the request handler (PSR-15)$response = $handler->handle(ServerRequestFactory::fromGlobals());
// Output PSR-7 response with a response emitter implementation of your choice
(newSapiEmitter())->emit($response);