rkr / simple-router
一个简单的通配符匹配器
dev-master
2015-12-07 14:31 UTC
Requires
- php: >= 5.4.0
- psr/http-message: 1.*
- rkr/php-ioc-contract: *
- rkr/recursive-array-accessor: 3.*
Requires (Dev)
- phpunit/phpunit: 3.7.*
- rkr/php-di-ioc-adapter: *
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' => []]