dotink / journey
Journey 是 FastRoute 的包装器,它提供了缺失的功能
这个包的规范仓库似乎已不存在,因此该包已被冻结。
1.5.0
2018-04-27 14:50 UTC
Requires
- nikic/fast-route: ^1.2
README
Journey 是围绕 FastRoute 的包装器,通过扩展收集器和在分发器周围提供薄层包装来提供一些附加功能。附加功能包括:
- 注册简写模式的能力
- 提供路由操作解析器的功能
- 定义参数转换(将参数转换为和从 URL 转换回)的能力
- 易于生成链接(不是反向路由)
- 直接使用 PSR-7 请求/响应对象
定义路由
首先我们需要创建一个收集器
$parser = new FastRoute\RouteParser\Std(); $generator = new FastRoute\DataGenerator\GroupCountBased(); $collector = new Dotink\Journey\Collector($parser, $generator);
一旦创建收集器,就可以根据 FastRoute 的文档定义路由
$collector->addRoute('GET', '/test', 'handler');
可以定义多个用于匹配的请求方法
$collector->addRoute(['GET', 'POST'], '/test', 'handler');
并且可以为单一请求类型使用简写
$collector->get(/test', 'handler');
只有 Journey 提供的还有 any()
方法,它可以匹配 GET、PUT、PATCH、POST、DELETE、HEAD 中的任何一个
$collector->any(/test', 'handler');
模式匹配
FastRoute 提供开箱即用的基于正则表达式的模式匹配,例如:
$collector->addRoute('GET', '/user/{id:\d+}', 'handler');
它还提供了可选参数和 URL 组件
$collector->addRoute('GET', '/user/{id:\d+}[/{name}]', 'handler');
虽然这两者仍然存在,Journey 还提供了注册模式简写的能力
$collector->addPattern('#', '\d+'); $collector->addRoute('GET', '/user/{id:#}', 'handler');
模式必须精确匹配参数标记中 :
和关闭 }
之间的字符串,并且当添加路由时,将逐个与作为模式的正则表达式替换。如果没有注册的模式精确匹配,则该模式将被解释为正则表达式。