1. 程式人生 > >ThinkPHP5.0路由詳細解答5

ThinkPHP5.0路由詳細解答5

快捷路由

快捷路由允許你快速給控制器註冊路由,並且針對不同的請求型別可以設定方法字首,例如:

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/info
get 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']);