TP5路由知识总结

一、路由的模式

普通模式(默认pathinfo,不解析路由)

url_route_on’ => false

混合模式(pathinfo+解析路由)
‘url_route_on’ => true,
‘url_route_must’=> false,
强制模式(必须路由)
url_route_on’ => true,
‘url_route_must’ => true,

二、动态注册路由

1、动态注册路由

Route::rule(‘路由表达式’,‘路由地址’,‘请求类型’,‘路由参数(数组)’,‘变量规则(数组)’);

实例
return [
Route::rule('demo/:name/[:sex]', 'index/Index/demo', 'GET', ['ext' => 'html'], ['name' => '\w+', 'age' => '\w{1,2}']),
]

路由表达式:demo/:name/[:sex](”[]“为可选)
路由地址:/index/Index/demo
请求类型:get|post| 等
路由参数:[‘ext’=>‘html’](后缀检测)等等
变量规则:[‘sex’=>‘0|1’](只能为0和1)等等,正则表达式

//根路径下使用闭包
Route::get('/', function () {
    echo '我是demo3,临时维护,谢谢支持!';
}),

//301重定向
//     Route::get('demo4', 'http://www.baidu.com'),
2、数组方式动态注册路由(简洁)
return [
//pattern全局变量
'__pattern__' => [
    'name' => '\w+',
    ...
],

'demo2' => 'admin/Index/demo2',
'demo3/:name/:age' => ['admin/Index/demo3', ['method' => 'get', 'ext' => 'asp'], ['age' => '\d+']],
'demo4/:name/:money' => ['admin/Index/demo4', ['method' => 'get', 'ext' => 'asp'], ['money' => '\d+']],
'demo5/:name' => ['admin/Index/demo5', ['method' => 'get', 'ext' => 'php'], []],
];

三、路由分组

个人:同一个路由定义(demo),根据URL传递参数的值的不同,而匹配不同的变量规则,从而进入不同的路由规则。例如以下

①逐条

'demo/:num' => ['admin/Index/demo1', ['method' => 'get'], ['num' => '\d{2,4}']],
'demo/:str' => ['admin/Index/demo2', ['method' => 'get'], ['str' => '[a-zA-Z]+']],
'demo/:bool' => ['admin/Index/demo3', ['method' => 'get'], ['bool' => '0|1']],

②合并

'[demo]' => [
    ':num' => ['admin/Index/demo1', ['method' => 'get'], ['num' => '\d{2,4}']],
    ':str' => ['admin/Index/demo2', ['method' => 'get'], ['str' => '[a-zA-Z]+']],
    ':bool' => ['admin/Index/demo3', ['method' => 'get'], ['bool' => '0|1']],
],

③使用group分组注册

//Route::group(‘路由表达式’,‘对路由的定义’);
think\Route::group('demo', [
    ':num' => ['admin/Index/demo1', ['method' => 'get'], ['num' => '\d{2,4}']],
    ':str' => ['admin/Index/demo2', ['method' => 'get'], ['str' => '[a-zA-Z]+']],
    ':bool' => ['admin/Index/demo3', ['method' => 'get'], ['bool' => '0|1']],
]);

你可能感兴趣的:(php)