racoon/router

nikic/fast-route 的基本扩展。

1.0.1 2016-06-14 10:07 UTC

This package is auto-updated.

Last update: 2024-09-15 06:50:30 UTC


README

Build Status Total Downloads Latest Stable Version Latest Unstable Version License

路由

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 请求类型,如 GETPOST

可以是 stringstringarray

请求 URI

路由应匹配的请求 URI。

您可以通过多种方式定义请求 URI。

'/users/list'
'/users/get/{userId}'
'/users/get/{userId:\d+}'

有关更多信息,请参阅 FastRoute 路由文档

在此处定义的任何通配符/占位符都将传递到控制器/处理程序方法中。

处理程序字符串

处理程序字符串定义了当当前请求与路由匹配时应执行的类和方法。

所需的格式为 \MyApp\Users@list,其中 \MyApp\Users 是包括命名空间的完整类名,而 list 是您想在该类中执行的位于该类中的方法。