• tp5--路由的使用方法(深入)


    懒得写注释,直接上代码

    配置文件Route:

     1 <?php
     2 use thinkRoute;
     3 
     4 //tp5路由测试
     5 //动态注册
     6 //Route::rule('路由表达式','路由地址','请求类型','路由参数(数组)','变量规则(数组)');
     7 //     /[:abc]为可选参数,一般放在必选参数的最后
     8 //Route::rule('demo/:name/:age/[:abc]', 'index/Index/demo', 'GET|POST', ['domain'=>'shop.com','ext'=>'html'], ['name'=>'W+']);
     9 
    10 //路由闭包
    11 //Route::get('hello/:name',function($name){
    12 //    return 'Hello,'.$name;
    13 //});
    14 
    15 // '/'表示网站的public,这样设置则为首页路径
    16 //Route::get('/',function(){
    17 //    return '你的网站已关闭';
    18 //});
    19 
    20 //跳转网页
    21 //Route::get('demo1', 'http://www.baidu.com');
    22 
    23 
    24 //动态分组
    25 //Route::group('demo',[
    26 //    ':num' =>  ['index/Index/demo2',  ['method'=>'get|post' , 'ext'=>'ps'] , ['num' => 'd{2,4}'] ],
    27 //    ':str' =>  ['index/Index/demo3',  ['method'=>'get|post' , 'ext'=>'ps'] , ['str' => '[a-zA-Z]'] ],
    28 //    ':bool' => ['index/Index/demo4',  ['method'=>'get|post' , 'ext'=>'ps'] , ['bool'=> '0|1'] ],
    29 //]);
    30 
    31 
    32 //动态闭包分组
    33 //Route::group('demo', function(){
    34 //    Route::any(':num','index/Index/demo2',['method'=>'get|post' , 'ext'=>'ps'] ,  ['num' => 'd{2,4}'] );
    35 //    Route::any(':str','index/Index/demo3',['method'=>'get|post' , 'ext'=>'ps'] ,  ['str' => '[a-zA-Z]'] );
    36 //    Route::any(':bool','index/Index/demo4',['method'=>'get|post' , 'ext'=>'ps'] , ['bool' => '0|1'] );
    37 //});
    38 
    39 //将公共的放在一起
    40 //头重脚轻
    41 //Route::group(['name' => 'demo','method'=>'get|post','ext'=>'ps','prefix'=>'index/Index/'], function(){
    42 //    Route::any(':num','demo2',[] ,  ['num' => 'd{2,4}'] );
    43 //    Route::any(':str','demo3',[] ,  ['str' => '[a-zA-Z]'] );
    44 //    Route::any(':bool','demo4',[ 'ext'=>'ps'] , ['bool' => '0|1'] );
    45 //});
    46 
    47 //->改
    48 //Route::group('demo', function(){
    49 //    Route::any(':num','demo2');
    50 //    Route::any(':str','demo3');
    51 //    Route::any(':bool','demo4' );},
    52 //    ['method'=>'get|post','ext'=>'ps','prefix'=>'index/Index/'],
    53 //    ['num' => 'd{2,4}' , 'str' => '[a-zA-Z]' , 'bool' => '0|1' ]);
    54 
    55 
    56 //动态的路由别名定义
    57 //注意!路由别名不支持变量类型和路由条件判断,单纯只是为了缩短URL地址,并且在定义的时候需要注意避免和路由规则产生混淆。
    58 //Route::alias('index','index/Index',['ext'=>'html']);
    59 
    60 //动态黑白名单(allow白名单 , except黑名单)
    61 Route::alias('index','index/Index',['ext'=>'html','allow'=> 'demo2']);
    62 
    63 //批量注册
    64 return [
    65     //统一变量名称一样的变量规则,(如果个别同时定义,则以个别的为准)
    66 //    '__pattern__' => [
    67 //              'name' => 'w+'
    68 //    ],
    69 
    70 //     "demo/:name/:age/[:abc]" => ['index/Index/demo' , ['method' => 'GET|POST' , 'ext' => 'html'] , ['name'=> 'W+']],
    71 
    72     //路由分组
    73     //根据专参不同,来决定进入哪个控制器
    74 //    'demo/:num' =>  ['index/Index/demo2',  ['method'=>'get|post' , 'ext'=>'ps'] , ['num' => 'd{2,4}'] ],
    75 //    'demo/:str' =>  ['index/Index/demo3',  ['method'=>'get|post' , 'ext'=>'ps'] , ['str' => '[a-zA-Z]'] ],
    76 //    'demo/:bool' => ['index/Index/demo4',  ['method'=>'get|post' , 'ext'=>'ps'] , ['bool'=> '0|1'] ],
    77 
    78     //分组
    79 //    '[demo]' =>[
    80 //            ':num' =>  ['index/Index/demo2',  ['method'=>'get|post' , 'ext'=>'ps'] , ['num' => 'd{2,4}'] ],
    81 //            ':str' =>  ['index/Index/demo3',  ['method'=>'get|post' , 'ext'=>'ps'] , ['str' => '[a-zA-Z]'] ],
    82 //            ':bool' => ['index/Index/demo4',  ['method'=>'get|post' , 'ext'=>'ps'] , ['bool'=> '0|1'] ],
    83 //    ],
    84 
    85 //批量定义路由别名
    86 //    '__alias__' =>[
    87 //        'index' => ['index/Index',['ext'=>'html']],
    88 //    ]
    89 
    90 //黑白名称
    91 //    '__alias__' =>[
    92 //        'index' => ['index/Index',[
    93 //            'ext'=>'html',
    94 //            'allow' => 'demo2',
    95 //        ]],
    96 //    ]
    97 ];

    控制器:

     1 <?php
     2 namespace appindexcontroller;
     3 use appindexcontrollerBase;
     4 
     5 class Index extends Base
     6 {
     7     public function index()
     8     {
     9         return $this -> fetch();
    10     }
    11 
    12 
    13     public function demo($name,$age,$abc='')
    14     {
    15         echo "ThinkPHP5 路由使用方法说明!";
    16         echo "<br/>";
    17         echo "我的名字是" . $name;
    18         echo "<br/>";
    19         echo "今年我已经" . $age ."岁了";
    20         echo "<br/>";
    21         echo "我是可选变量:". $abc;
    22         echo "<br/>";
    23         echo "其中,我是没有路由化的参数:" . input('id');
    24     }
    25 
    26     public function demo2($num)
    27     {
    28         echo '我是路由2';
    29         echo "<br/>";
    30         echo "我只能是数字:" .$num;
    31     }
    32 
    33     public function demo3($str)
    34     {
    35         echo '我是路由3';
    36         echo "<br/>";
    37         echo "我只能是字母:" .$str;
    38     }
    39 
    40     public function demo4($bool)
    41     {
    42         echo '我是路由4';
    43         echo "<br/>";
    44         echo "我只能是布尔值:" .$bool;
    45     }
    46 
    47 }
  • 相关阅读:
    python 并发编程 多线程 event
    python 并发编程 多线程 定时器
    python 并发编程 多线程 信号量
    linux top 查看CPU命令
    python 并发编程 多线程 GIL与多线程
    python 并发编程 多线程 死锁现象与递归锁
    python 并发编程 多线程 GIL与Lock
    python GIL全局解释器锁与互斥锁 目录
    python 并发编程 多线程 GIL全局解释器锁基本概念
    执行python程序 出现三部曲
  • 原文地址:https://www.cnblogs.com/laijinquan/p/10111668.html
Copyright © 2020-2023  润新知