ThinkPHP5.0路由詳細解答5
阿新 • • 發佈:2019-01-26
快捷路由
快捷路由允許你快速給控制器註冊路由,並且針對不同的請求型別可以設定方法字首,例如:
Route::controller('user','index/User');
User控制器定義如下:
namespace app\index\controller;classUser{publicfunction getInfo(){}publicfunction getPhone(){}publicfunction postInfo(){}publicfunction putInfo(){}publicfunction deleteInfo(){}}
我們可以通過下面的URL訪問
get http://localhost/user/infoget http://localhost/user/phone post http://localhost/user/info put http://localhost/user/infodelete http://localhost/user/info
路由分組
路由分組功能允許把相同字首的路由定義合併分組,這樣可以提高路由匹配的效率,不必每次都去遍歷完整的路由規則。
例如,我們有定義如下兩個路由規則的話
'blog/:id'=>['Blog/read',['method'=>'get'],['id'=>'\d+']],'blog/:name'=>['Blog/read',['method'=>'post']],
可以合併到一個blog分組
'[blog]'=>[':id'=>['Blog/read',['method'=>'get'],['id'=>'\d+']],':name'=>['Blog/read',['method'=>'post']],],
可以使用Route類的group方法進行註冊,如下:
Route::group('blog',[':id'=>['Blog/read',['method'=>'get'],['id'=>'\d+']],':name'=>['Blog/read',['method'=>'post']],]);
可以給分組路由定義一些公用的路由設定引數,例如:
Route::group('blog',[':id'=>['Blog/read',[],['id'=>'\d+']],':name'=>['Blog/read',[],],['method'=>'get','ext'=>'html']);
支援使用閉包方式註冊路由分組,例如:
Route::group('blog',function(){Route::rule(':id','blog/read',[],['id'=>'\d+']);Route::rule(':name','blog/read',[],['name'=>'\w+']);},['method'=>'get','ext'=>'html']);
全域性MISS路由
如果希望在沒有匹配到所有的路由規則後執行一條設定的路由,可以使用MISS路由功能,只需要在路由配置檔案中定義:
return['new/:id'=>'News/read','blog/:id'=>['Blog/update',['method'=>'post|put'],['id'=>'\d+']],'__miss__'=>'public/miss',];
或者使用miss方法註冊路由
Route::miss('public/miss');
當沒有匹配到所有的路由規則後,會路由到 public/miss路由地址。
分組MISS路由
分組支援獨立的MISS路由,例如如下定義:
return['[blog]'=>['edit/:id'=>['Blog/edit',['method'=>'get'],['id'=>'\d+']],':id'=>['Blog/read',['method'=>'get'],['id'=>'\d+']],'__miss__'=>'blog/miss',],'new/:id'=>'News/read','__miss__'=>'public/miss',];
如果使用group方法註冊路由的話,可以使用下面的方式:
Route::group('blog',function(){Route::rule(':id','blog/read',[],['id'=>'\d+']);Route::rule(':name','blog/read',[],['name'=>'\w+']);Route::miss('blog/miss');},['method'=>'get','ext'=>'html']);