rkr/simple-router

一个简单的通配符匹配器

dev-master 2015-12-07 14:31 UTC

This package is auto-updated.

Last update: 2024-08-29 04:36:54 UTC


README

一种简单、无偏见的路由方法。

工作流程

1.) 定义一些路由。路由是一些以唯一键标识的数组。数据部分完全由您决定。如果您想在数据部分使用特殊内容,请在那里定义。

2.) 实例化Router并将路由数组传递给它。路由器所做的只是查找与传入REQUEST_URI(例如)匹配的数据数组的关键字。因此,$router->lookup()的返回值是匹配关键字的值部分。

3.) 使用数据数组做些事情。例如,您可以将$_GET或$_POST参数合并到某个数据键中,进行一些后处理,或进行其他操作。

4.) 可选地利用分发器调用任意类。

以下是引导程序的示例

// Setup some test-request-parameters
$_SERVER['REQUEST_URI'] = '/some/path/10';
$_SERVER['REQUEST_METHOD'] = 'GET';

// Should get overwritten by the /10 above
$_GET['start'] = 20;

$_SERVER = array_merge(['REQUEST_URI' => '/', 'REQUEST_METHOD' => 'GET'], $_SERVER);

$routes = [
  'GET /' => ['class' => IndexCtrl::class, 'method' => 'start'],
  'GET /some/path' => ['class' => LoginCtrl::class, 'method' => 'test'],
  'GET /some/path/:start' => ['class' => 'UserCtrl::class', 'method' => 'test'],
  'GET /list:start?type=gallery' => ['class' => 'ProductsCtrl::class', 'method' => 'showGallery'],
];

$router = new Router($routes);
$data = $router->lookup($_SERVER['REQUEST_URI'], $_SERVER['REQUEST_METHOD'], $_REQUEST);

print_r($data); // ['data' => ['class' => IndexCtrl::class, 'method' => 'start'], 'params' => []]