当前位置 主页 > 网站技术 > 代码类 >

    thinkPHP5框架路由常用知识点汇总

    栏目:代码类 时间:2019-09-15 14:04

    本文实例讲述了thinkPHP5框架路由常用知识点。分享给大家供大家参考,具体如下:

    一、路由的模式

    普通模式(默认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']],]);

    ④从③提取共同的部分——简化

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