pawel-jakowczyk / middleware
The request handler responsible for processing middlewares
Requires
- nyholm/psr7: ^1.4
- psr/http-server-handler: ^1.0
- psr/http-server-middleware: ^1.0
- symfony/routing: ^5.3
Requires (Dev)
- laminas/laminas-diactoros: ^2.6
- phpunit/phpunit: ^9
This package is auto-updated.
Last update: 2025-05-06 05:04:05 UTC
README
This repository holds the MiddlewareFactoryRequestHandler which implements the Psr\Http\Server\RequestHandlerInterface. The request handler is responsible for processing the collection of middlewares and final request handler.
To define middleware collection and request handler one needs to create MiddlewareFactory and HandlerFactory implementations. Those factories should be than passed to request under AttributeNames::MIDDLEWARE_FACTORY and AttributeNames::HANDLER_FACTORY. The MiddlewareRoute can be used in order to pass factories as route defaults.
The reason why factories are used is not to create objects with their dependencies too early when they might not be used, by using factories they are created during MiddlewareFactoryRequestHandler execution.
Instalation
composer require pawel-jakowczyk/middleware
Usage
use Laminas\Diactoros\Response; use Laminas\Diactoros\ServerRequest; use PJ\Middleware\AttributeNames; use PJ\Middleware\HandlerFactory; use PJ\Middleware\MiddlewareFactoryRequestHandler; use PJ\Middleware\EmptyMiddlewareFactory; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ResponseInterface; use Psr\Http\Server\RequestHandlerInterface; (new MiddlewareFactoryRequestHandler())->handle( (new ServerRequest()) ->withAttribute( AttributeNames::MIDDLEWARE_FACTORY, new EmptyMiddlewareFactory() ) ->withAttribute( AttributeNames::HANDLER_FACTORY, new class () implements HandlerFactory { public function createRequestHandler(): RequestHandlerInterface { return new class() implements RequestHandlerInterface { public function handle(ServerRequestInterface $request): ResponseInterface { return new Response(); } }; } } ) );