批量注冊

批量注冊路由規(guī)則可以使用兩種方式,包括方法注冊和路由配置定義。

批量注冊

如果不希望一個個注冊,可以使用批量注冊,規(guī)則如下:

Route::rule([
'路由規(guī)則1'=>'路由地址和參數(shù)',
'路由規(guī)則2'=>['路由地址和參數(shù)','匹配參數(shù)(數(shù)組)','變量規(guī)則(數(shù)組)']
...
],'','請求類型','匹配參數(shù)(數(shù)組)','變量規(guī)則');

如果在外面和規(guī)則里面同時傳入了匹配參數(shù)和變量規(guī)則的話,路由規(guī)則定義里面的最終生效,但請求類型參數(shù)以最外層決定,例如:

Route::rule([
    'new/:id'  =>  'News/read',
    'blog/:id' =>  ['Blog/update',['ext'=>'shtml'],['id'=>'\d{4}']],
    ...
],'','GET',['ext'=>'html'],['id'=>'\d+']);

以上的路由注冊,最終blog/:id只會在匹配shtml后綴的訪問請求,id變量的規(guī)則則是 \d{4}。

如果不同的請求類型的路由規(guī)則是一樣的,為了避免數(shù)組索引沖突的問題,請使用單獨(dú)的請求方法定義路由。

同樣,我們也可以使用其他幾個注冊方法進(jìn)行批量注冊。

// 批量注冊GET路由
Route::get([
    'new/:id'  =>  'News/read',
    'blog/:id' =>  ['Blog/edit',[],['id'=>'\d+']]
    ...
]);
// 效果等同于
Route::rule([
    'new/:id'  =>  'News/read',
    'blog/:id' =>  ['Blog/edit',[],['id'=>'\d+']]
    ...
],'','GET');

定義路由配置文件

除了支持動態(tài)注冊,也可以直接在應(yīng)用目錄下面的route.php 的最后通過返回數(shù)組的方式直接定義路由規(guī)則,內(nèi)容示例如下:

return [
    'new/:id'   => 'News/read',
    'blog/:id'   => ['Blog/update',['method' => 'post|put'], ['id' => '\d+']],
];

路由配置文件定義的路由規(guī)則效果和使用any注冊路由規(guī)則一樣。

路由動態(tài)注冊和配置定義的方式可以共存,例如:

use think\Route;

Route::rule('hello/:name','index/index/hello');

return [
    'new/:id'   => 'News/read',
    'blog/:id'   => ['Blog/update',['method' => 'post|put'], ['id' => '\d+']],
];

默認(rèn)情況下,只會加載一個路由配置文件route.php,如果你需要定義多個路由文件,可以修改route_config_file配置參數(shù),例如:

// 定義路由配置文件(數(shù)組)
'route_config_file' =>  ['route', 'route1', 'route2'],

如果存在相同的路由規(guī)則,一樣可以參考前面的批量注冊方式進(jìn)行定義。

由于檢測機(jī)制問題,動態(tài)注冊的性能比路由配置要高一些,尤其是多種請求類型混合定義的時候。

文檔最后更新時間:2018-04-25 18:15:42

文檔
目錄

深色
模式

切換
寬度