xoops/frame

XOOPS PSR-15 中间件调度器

v0.1.3 2018-02-03 00:05 UTC

This package is auto-updated.

Last update: 2024-09-21 20:38:36 UTC


README

Frame 实现了一个简单的 PSR-15 兼容 中间件调度器。

Frame 由 composer 管理,因此安装它最简单的方法是要求 xoops/frame

Software License Coverage Status Quality Score Latest Version

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));