pawel-jakowczyk / middleware
负责处理中间件的请求处理器
0.1.0
2021-06-05 20:13 UTC
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: 2024-09-06 03:28:46 UTC
README
此存储库包含MiddlewareFactoryRequestHandler,该处理器实现了Psr\Http\Server\RequestHandlerInterface接口。请求处理器负责处理中间件集合和最终请求处理器。
要定义中间件集合和请求处理器,需要创建MiddlewareFactory和HandlerFactory的实现。然后,将这些工厂传递给请求,分别在AttributeNames::MIDDLEWARE_FACTORY和AttributeNames::HANDLER_FACTORY下。可以使用MiddlewareRoute来将工厂作为路由默认值传递。
使用工厂的原因是,避免过早创建带有依赖的对象,这些对象可能不会被使用。通过使用工厂,它们将在MiddlewareFactoryRequestHandler执行期间创建。
安装
composer require pawel-jakowczyk/middleware
使用方法
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(); } }; } } ) );