tp5--路由的使用方法(深入)
懒得写注释,直接上代码
配置文件Route:
1 <?php 2 use think\Route; 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 app\index\controller; 3 use app\index\controller\Base; 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 }