vitodtagliente/pure-routing

v1.0.0 2023-01-13 11:06 UTC

This package is auto-updated.

Last update: 2024-09-13 14:38:42 UTC


README

路由组件将HTTP请求映射到一组配置变量。

如何使用

  1. 实例化路由器

    $router = new Pure/Routing/Router();
  2. 定义路由

    $router->get('/foo', $callback);    // GET method
    $router->post('/foo', $callback);   // POST method
    $router->put('/foo', $callback);    // PUT method
    $router->delete('/foo', $callback); // DELETE method

    $callback 可以是

    • 一个函数

      $router->get('/foo', function(){ ... });
    • 一个字符串

      function foo(){ ... }
      $router->get('/foo', 'foo');

      其中 foo 是一个函数。

      此外,回调可以是一个控制器。

      $router->get('/foo', 'FooController@action');

      请记住,必须定义所有的命名空间闭包,就像示例中那样

      $router->get('/foo', 'App\Controllers\FooController@action');
      
      $router->get('/foo', 'App\Controllers\FooController::class . '@action');

      是否可以定义命名空间别名,就像这个示例一样

      $router->namespace('app', 'App\Controllers');
      $router->get('/foo', 'app::FooController@action');
  3. 使用参数定义路由

    • 参数可以使用(**$**变量)语法定义,就像在php中一样
      $routes->get('/user/$username', function($username){} );
    • 参数可以与正则表达式关联。有3种默认的正则表达式类型
      • i: 整数
      • a: 字母数字
      • c: 字符。在这个例子中,我们定义 $id 为整数
      $router->get('/user/$id:i', function($id){ ... } );
      可以添加新的正则表达式
      $router->rule('k', 'regular_expression');

如何定义中间件

中间件允许在执行路由之前检查路由。让我们举一个例子,尝试保护 'dashboard' 导航不被未登录的用户访问

use Pure\Routing\Middleware;

class AuthMiddleware extends Middleware
{
    public function handle(){
        // returns true if the user is logged in
        return MyAuthNamespace\Auth::check();
    }
}
$router->get('/dashboard', $callback)->middleware(AuthMiddleware::class);   

如果handle函数返回false,则停止路由执行。