middlewares/fast-route

使用 FastRoute 的中间件

v2.0.1 2020-12-02 00:05 UTC

This package is auto-updated.

Last update: 2024-08-29 05:24:22 UTC


README

Latest Version on Packagist Software License Testing Total Downloads

用于处理发现中间件的 FastRoute。

需求

安装

此包可以通过 Composer 以 middlewares/fast-route 的方式安装和自动加载。

composer require middlewares/fast-route

您可能还需要安装 middlewares/request-handler

示例

此示例使用 middlewares/request-handler 来执行路由处理程序

//Create the router dispatcher
$dispatcher = FastRoute\simpleDispatcher(function (FastRoute\RouteCollector $r) {
    $r->addRoute('GET', '/hello/{name}', function ($request) {
        //The route parameters are stored as attributes
        $name = $request->getAttribute('name');

        //You can echo the output (it will be captured and written into the body)
        echo sprintf('Hello %s', $name);

        //Or return a string
        return sprintf('Hello %s', $name);

        //Or return a response
        return new Response();
    });
});

$dispatcher = new Dispatcher([
    new Middlewares\FastRoute($dispatcher),
    new Middlewares\RequestHandler()
]);

$response = $dispatcher->dispatch(new ServerRequest('/hello/world'));

FastRoute 允许将任何内容定义为路由处理程序(闭包、回调、动作对象、控制器类等)。中间件将此处理程序存储在请求属性中。

用法

使用 FastRoute\Dispatcher 实例创建中间件

$route = new Middlewares\FastRoute($dispatcher);

可选地,您可以提供一个 Psr\Http\Message\ResponseFactoryInterface 作为第二个参数,该参数将用于创建错误响应(404 或 405)。如果未定义,Middleware\Utils\Factory 将自动检测。

$responseFactory = new MyOwnResponseFactory();

$route = new Middlewares\FastRoute($dispatcher, $responseFactory);

属性

更改用于在服务器请求中存储处理程序的属性名称。默认名称为 request-handler

$dispatcher = new Dispatcher([
    //Save the route handler in an attribute called "route"
    (new Middlewares\FastRoute($dispatcher))->attribute('route'),

    //Execute the route handler
    (new Middlewares\RequestHandler())->handlerAttribute('route')
]);

有关最近更改的更多信息,请参阅 CHANGELOG,有关贡献细节,请参阅 CONTRIBUTING

MIT 许可证 (MIT)。有关更多信息,请参阅 LICENSE