kyleblanker/php-router

PHP 路由器

v1.0.0 2017-05-07 20:43 UTC

This package is not auto-updated.

Last update: 2024-09-20 20:56:55 UTC


README

这只是我在瞎搞,我可能不会在项目中使用这个

PHP 路由器

一个简单的 PHP 路由器。

支持的 HTTP 方法

  • GET
  • POST
  • PUT
  • DELETE
  • HEAD
  • PATCH
  • OPTIONS
  • CONNECT

示例

创建路由器

$router = new \KyleBlanker\Router();

创建基本路由

$router = new \KyleBlanker\Router();

$router->route('GET','/my-route',function(){
    echo 'This is my route';
});

路由变量

路由变量用{}括起来。

$router = new \KyleBlanker\Router();

$router->route('GET','/my-route/{variable}',function($variable){
    echo 'This is my route variable ' . $variable;
});

路由分组

路由分组会在路由路径上添加前缀。

$router = new \KyleBlanker\Router();

$router->group('/my-group', function($router){
    $router->route('GET','/my-route',function(){
        echo 'This is my route';
    });
});

这将创建一个/my-group/my-route的路由。

正则表达式

$router = new \KyleBlanker\Router();

$router->route('GET','/my-route/{id:/[^0-9]/}',function($id){
    echo 'This is my route';
});

这个路由将只允许/my-route后面的数字0-9。正则表达式键由:之前的内容定义。

替代路由调用

$router = new \KyleBlanker\Router();

$router->get('/get-route',function(){
    echo 'This is my get route';
});

$router->post('/post-route',function(){
    echo 'This is my post route';
});

$router->any('/any-route',function(){
    echo 'This is my any route';
});

路由器配置允许你根据支持的HTTP方法调用方法。它还允许你调用$router->any(),这将创建一个支持所有HTTP方法的路由。

分发路由

$router = new \KyleBlanker\Router();

$router->route('GET','/my-route/{id:/[^0-9]/}',function($id){
    echo 'This is my route';
});

try
{
    $response = $router->dispatch($_SERVER['REQUEST_METHOD'],$_SERVER['REQUEST_URI']);
}
catch(\KyleBlanker\Routing\Exceptions\RouteNotFoundException $e)
{
    // A route was not found
}
catch(\KyleBlanker\Routing\Exceptions\MethodNotAllowedException $e)
{
    // A route was found, but the http method was not supported.
}

$route_handler = $response[Router::ROUTE_HANDLE];
$route_parameters = $response[Router::ROUTE_PARAMETERS];

如果没有找到匹配项,则会抛出\KyleBlanker\Routing\Exceptions\RouteNotFoundException 异常。如果找到匹配项,但该路由不支持该HTTP方法,则会抛出\KyleBlanker\Routing\Exceptions\MethodNotAllowedException异常。路由处理程序可以是任何你想要的东西,例如一个字符串来调用某种控制器或闭包。这个包将留给你自己。路由参数是一个关联数组,键是路由路径中提供的键,例如/my-route/{name}{id:/[^0-9]/}可能是['name' => 'kyle', 'id' => 1]