jowy/routing-middleware

PSR 7 路由中间件

安装: 16

依赖: 0

建议者: 0

安全: 0

星标: 1

关注者: 2

分支: 0

类型:中间件

v1.0.1 2015-06-25 08:00 UTC

This package is not auto-updated.

Last update: 2024-09-14 17:53:33 UTC


README

Build Status

基于 nikic/fast-route 的 PSR 7 路由中间件

安装与要求

使用 composer 安装

$ composer require jowy/routing-middleware

此库有以下依赖

  • zendframework/zend-diactoros,用于 PSR 7 实现
  • zendframework/zend-stratigility,提供 PSR 7 中间件的抽象
  • nikic/fast-route,用于路由
  • doctrine/cache,用于缓存路由

使用方法

zendframework/zend-stratigility 上的使用

use Zend\Stratigility\MiddlewarePipe;
use Jowy\Routing\Routing;

$app = new MiddlewarePipe();
$route_middleware = new Routing($options);

$app->pipe($route_middleware);

relay/relay 上的使用

当使用 relay/relay 时,建议使用容器来解析中间件

use Pimple\Container;
use Relay\Relay;
use Jowy\Routing\Routing;

$container = new Container();

$container["middleware"] = [
    Routing::class => function() {
        return new Routing($options);
    }
];

$resolver = function ($class) use ($container) {
    return $container[$class];
}

new Relay(array_keys($container["middleware"], $resolver);

选项

所有选项都在数组中,格式为 key => value。

  • collection(可调用或字符串)包含从 RouteCollector 注册的路由

    [
        "collection" => function (RouteCollector $collector) {
            $collector->addRoute("GET", "/", function (ServerRequestInterface $req, ResponseInterface $res) {
                return $res;
            });
            $collector->addRoute("GET", "/home", function (ServerRequestInterface $req, ResponseInterface $res) {
                return $res;
            });
        }
    ]

    可以使用类代替闭包来处理匹配的请求

    [
        "collection" => function (RouteCollector $collector) {
            $collector->addRoute("GET", "/", "Fully\\Qualified\\ClassName:yourMethod");
        }
    ]
  • generator(对象)实现 FastRoute\DataGenerator

    [
        "generator" => new FastRoute\DataGenerator\GroupCountBased();
    ]
  • parser(对象)实现 FastRoute\RouteParser

    [
        "parser" => new FastRoute\RouteParser\Std();
    ]
  • dispatcher(可调用)返回实现 FastRoute\Dispatcher 的可调用对象

    [
        "dispatcher" => function ($dispatch_data) {
            return new FastRoute\Dispatcher\GroupCountBased($dispatch_data);
        }
    ]
  • cache(布尔值)切换路由缓存,默认值为 false

    [
        "cache" => true
    ]
  • cacheDriver(对象)如果启用 cache,则需要传递此参数到选项中。它必须包含 Doctrine\Common\Cache\Cache 的实现

    [
        "cacheDriver" => new ArrayCache()
    ]

许可协议

MIT,见 LICENSE