xoops / frame
XOOPS PSR-15 中间件调度器
Requires
- php: >7.1.0
- psr/http-message: ^1.0
- psr/http-server-handler: ^1.0
- psr/http-server-middleware: ^1.0
Requires (Dev)
- phpunit/phpunit: ^7.0
This package is auto-updated.
Last update: 2024-09-21 20:38:36 UTC
README
Frame 实现了一个简单的 PSR-15 兼容 中间件调度器。
Frame 由 composer 管理,因此安装它最简单的方法是要求 xoops/frame
。
Xoops/Frame/Rack
Rack 是一个中间件调度器。可以将 Psr\Http\Server\MiddlewareInterface
的实例添加到 rack 中。添加所需的中间件后,通过将 Psr\Http\Message\ServerRequestInterface
对象传递给 rack 的 run() 方法来调度。
$rack = new \Xoops\Frame\Rack(); $rack->add($someMiddleware); $rack->add($anotherMiddleware); $response = $rack->run($request);
Rack 将按添加顺序调用每个中间件。 Rack 将自身作为 Psr\Http\Server\RequestHandlerInterface
的 $handler 参数传递给每个中间件,并且当以这种方式调用时,将调度队列中的下一个中间件。
期望已安装的中间件最终返回一个 Psr\Http\Message\ResponseInterface
对象,并按照 PSR-15 规范,将从 run() 调用中返回。
作为 run() 方法的替代,您可以使用 __invoke() 方法来允许将 Rack 实例作为函数调用。
$response = $rack($request);
Rack 实例也是一个 Psr\Http\Server\MiddlewareInterface
对象。这允许 Rack 实例用作中间件,允许堆叠 racks。
Xoops/Frame/Exception
此命名空间定义了以下异常,可以在 Rack 中抛出
InvalidHandlerException
此结果可能来自尝试将 Rack 实例作为中间件添加到自身,或者从中间件队列中强制添加非有效的 Psr\Http\Server\MiddlewareInterface
对象。
RackExhaustedException
此异常由尝试越过中间件队列的末尾而产生。此条件表示没有返回响应消息,并且中间件队列中没有处理器来委托响应创建。
Xoops\Frame\Panel
Panel
命名空间包含几个小型 rack 仪表板,这些可能作为类似胶带的角色有用的中间件。
Blank
Blank
只是一个占位符。它除了委派并返回响应外,什么都不做。
$rack->addToQueue(new Blank);
ClosureToMiddleware
ClosureToMiddleware
允许您从 PHP Closure 或 匿名函数 构建中间件。
$callable = function (RequestInterface $request, RequestHandlerInterface $handler) { $response = $handler->handle($request); $modifiedResponse = $response->withHeader('X-Powered-By', 'black coffee'); return $modifiedResponse; }; $middleware = new ClosureToMiddleware($callable); $rack->add($middleware);
FixedResponse
FixedResponse
返回在实例化时传递给它的 Psr\Http\Message\ResponseInterface
。
$response = $myResponseFactory->createResponse(200);
$rack->add(new FixedResponse($response));