批量注冊
批量注冊路(lu)由(you)規則可以(yi)使(shi)用兩種(zhong)方式,包括方法注冊和(he)路(lu)由(you)配置定(ding)義。
批量注冊
如果不希(xi)望(wang)一個個注冊,可(ke)以使用批(pi)量注冊,規則如下:
Route::rule([
'路(lu)由(you)規則1'=>'路由(you)地址和參數',
'路由(you)規(gui)則2'=>['路由地址和參(can)數','匹配(pei)參數(shu)(數(shu)組)','變量規則(ze)(數組)']
...
],'','請求類型','匹(pi)配參(can)數(shu)(數(shu)組)','變量規則');
如(ru)果(guo)在外面(mian)和(he)(he)規則(ze)里面(mian)同時傳入了匹配參(can)(can)數和(he)(he)變量(liang)規則(ze)的話,路(lu)由(you)規則(ze)定義里面(mian)的最(zui)終生效,但請求類型參(can)(can)數以最(zui)外層決定,例如(ru):
Route::rule([
'new/:id' => 'News/read',
'blog/:id' => ['Blog/update',['ext'=>'shtml'],['id'=>'\d{4}']],
...
],'','GET',['ext'=>'html'],['id'=>'\d+']);
以上的路由注冊,最終blog/:id只會在匹配shtml后綴的訪問請求,id變量的規則則是 \d{4}。
如果(guo)不同(tong)的(de)請求(qiu)類型的(de)路由(you)規則是一樣的(de),為了避免數組索引沖突的(de)問題,請使用單獨的(de)請求(qiu)方法定義路由(you)。
同樣,我們(men)也可以使(shi)用其(qi)他幾個(ge)注冊方法進行批量注冊。
// 批(pi)量注冊(ce)GET路(lu)由(you)
Route::get([
'new/:id' => 'News/read',
'blog/:id' => ['Blog/edit',[],['id'=>'\d+']]
...
]);
// 效果等同(tong)于
Route::rule([
'new/:id' => 'News/read',
'blog/:id' => ['Blog/edit',[],['id'=>'\d+']]
...
],'','GET');
定義路由配置文件
除了支持動態注冊,也可以直接在應用目錄下面的route.php 的最后通過返回(hui)數組(zu)的方式直接定義路由規則,內容(rong)示例如下:
return [
'new/:id' => 'News/read',
'blog/:id' => ['Blog/update',['method' => 'post|put'], ['id' => '\d+']],
];
路由配置文件定義的路由規則效果和使用any注冊路由規則一樣。
路由動態注冊和配置定義的方式可以共存,例(li)如:
use think\Route;
Route::rule('hello/:name','index/index/hello');
return [
'new/:id' => 'News/read',
'blog/:id' => ['Blog/update',['method' => 'post|put'], ['id' => '\d+']],
];
默認情況下,只會加載一個路由配置文件route.php,如果你需要定義多個路由文件,可以修改route_config_file配置參數,例如:
// 定義(yi)路(lu)由配(pei)置文(wen)件(數(shu)組)
'route_config_file' => ['route', 'route1', 'route2'],
如果存在相同(tong)的路由規則,一樣可以參考(kao)前面的批量注冊方(fang)式(shi)進行定義(yi)。
由(you)于檢測機制問題,動態(tai)注冊的(de)(de)性能比路由(you)配置要高(gao)一些,尤其是多種請(qing)求類(lei)型混合(he)定義的(de)(de)時候。
