dotink/journey

Journey 是 FastRoute 的包装器,它提供了缺失的功能

这个包的规范仓库似乎已不存在,因此该包已被冻结。

1.5.0 2018-04-27 14:50 UTC

This package is auto-updated.

Last update: 2024-02-29 03:05:27 UTC


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

模式必须精确匹配参数标记中 : 和关闭 } 之间的字符串,并且当添加路由时,将逐个与作为模式的正则表达式替换。如果没有注册的模式精确匹配,则该模式将被解释为正则表达式。