racoon / router
nikic/fast-route 的基本扩展。
1.0.1
2016-06-14 10:07 UTC
Requires
- nikic/fast-route: ^1.0
- phpunit/phpunit: ^5.4
README
路由
Racoon 使用 nikic/fast-route 处理路由。
定义路由存储位置
路由需要在路由文件中添加,该文件应该添加到 Router
,或者定义在传递给路由器的匿名函数中。
$router->addRouteFile('/path/to/some_routes.php'); // Tells the router you are done adding routes so as it can process them. $router->init();
如果您想将路由存储在多个位置,可以按照以下方式操作。
$router ->addRouteFile('/path/to/some_routes.php') ->addRouteFile('/path/to/more_routes.php') ->addRouteFile('/path/to/even_more_routes.php'); // Tells the router you are done adding routes so as it can process them. $router->init();
如果您定义了多个路由位置,它们将以您定义的顺序包含/添加。
如果您不想在单独的文件中存储路由,可以执行以下操作。
$router->addRouteCallable(function($r) { // Define your routes here as if they were in another file. // $r->addRoute(), $r->addGroup(), etc are all available. });
设置路由
在已添加到路由器的其中一个路由文件中,您需要按照以下格式定义您的路由。
$httpRequestMethod = ['GET', 'POST']; $requestUri = '/users/list'; $handlerString = '\\MyApp\\Users@list'; $r->addRoute($httpRequestMethod, $requestUri, $handlerString);
路由组
为了便于多次设置长URL,您可以使用组。以下代码块给出相同的结果。
$r->addRoute(['GET', 'POST'], '/users/list', '\\MyApp\\Users@list'); $r->addRoute(['GET', 'POST'], '/users/get', '\\MyApp\\Users@get'); $r->addRoute(['GET', 'POST'], '/users/update', '\\MyApp\\Users@update'); $r->addRoute(['GET', 'POST'], '/users/delete', '\\MyApp\\Users@delete');
$r->addGroup('/users', function () { $r->addRoute(['GET', 'POST'], '/list', '\\MyApp\\Users@list'); $r->addRoute(['GET', 'POST'], '/get', '\\MyApp\\Users@get'); $r->addRoute(['GET', 'POST'], '/update', '\\MyApp\\Users@update'); $r->addRoute(['GET', 'POST'], '/delete', '\\MyApp\\Users@delete'); });
您也可以使用子组。以下代码块给出相同的结果。
$r->addRoute(['GET', 'POST'], '/some/long/url/do-something', '\\MyApp\\Users@list');
$r->addGroup('/some', function ($r) { $r->addGroup('/long', function ($r) { $r->addGroup('/url', function ($r) { $r->addRoute(['GET', 'POST'], '/do-something', '\\MyApp\\Users@list'); }); }); });
HTTP 请求方法
路由应匹配的 HTTP 请求方法。这可以是任何 HTTP 请求类型,如 GET
或 POST
。
可以是 string
或 string
的 array
。
请求 URI
路由应匹配的请求 URI。
您可以通过多种方式定义请求 URI。
'/users/list' '/users/get/{userId}' '/users/get/{userId:\d+}'
有关更多信息,请参阅 FastRoute 路由文档
在此处定义的任何通配符/占位符都将传递到控制器/处理程序方法中。
处理程序字符串
处理程序字符串定义了当当前请求与路由匹配时应执行的类和方法。
所需的格式为 \MyApp\Users@list
,其中 \MyApp\Users
是包括命名空间的完整类名,而 list
是您想在该类中执行的位于该类中的方法。