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请求映射到一组配置变量。
如何使用
-
实例化路由器
$router = new Pure/Routing/Router();
-
定义路由
$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');
-
-
使用参数定义路由
- 参数可以使用(**$**变量)语法定义,就像在php中一样
$routes->get('/user/$username', function($username){} );
- 参数可以与正则表达式关联。有3种默认的正则表达式类型
- i: 整数
- a: 字母数字
- c: 字符。在这个例子中,我们定义 $id 为整数
$router->get('/user/$id:i', function($id){ ... } );
可以添加新的正则表达式$router->rule('k', 'regular_expression');
- 参数可以使用(**$**变量)语法定义,就像在php中一样
如何定义中间件
中间件允许在执行路由之前检查路由。让我们举一个例子,尝试保护 '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,则停止路由执行。