
ThinkPHP5.2的路由部份,也和别的组件一样,做了精简和优化,重要包括以下方面:
作废路由定义的返回数组情势
因为不利于路由缓存生成,路由定义文件作废了返回数组的体式格局定义路由,必需采纳路由要领注册路由。
比方:
return [ 'hello/:name' => 'index/hello', ];
必需改成:
Route::get('hello/:name', 'index/hello');
多运用的路由定义文件位置
单运用形式下,路由定义文件和之前一样就在route目次下面,假如你的项目是采纳了多运用的话,每一个运用的路由定义和婚配都是自力的,也没有模块的观点,路由定义文件的位置应该是在route/运用子目次下面,比方:
route/index/route.php // index运用的路由定义文件 route/index/web.php // index运用的第二个路由定义文件 route/admin/route.php // admin运用的路由定义文件
默许的URL划定规矩变成了
http://域名/进口文件(或许运用名)/控制器名/操纵名
运用的路由划定规矩实际上是定义的进口文件(或许运用名)背面的URL部份,而不包括运用。
自动多运用
最新的5.2版本能够支撑在同一个进口文件中接见多个差别的运用(之前必需每一个运用增加一个对应的进口文件)。
比方在index.php进口文件中运用:
(new App())->autoMulti()->run()->send();
就能够没必要建立进口文件自动经由过程URL接见多个运用
http://serverName/index.php/admin
假如你的默许运用不是index(默许为进口文件名),那末能够经由过程name要领指定默许运用。
(new App())->autoMulti() ->name('admin') ->run() ->send();
支撑运用名的别号映照,比方:
(new App())->autoMulti([ 'think' => 'admin', // 把admin运用映照为think ])->run()->send();
假如须要对某个运用举行自定义,能够运用
(new App())->autoMulti([ 'admin' => function($app) { $app->debug(true)->useClassSuffix(); } ])->run()->send();
作废别号路由
因为运用场景有限和机能开支问题,作废本来的别号路由功用,发起运用资本路由或许零丁的路由替换。
作废快速路由
因为运用场景有限和不太相符范例,作废了本来的控制器快速路由功用。
作废空控制器和空操纵
本来的空控制器和空操纵功用已作废,请运用MISS路由功用替换,而且能够支撑给差别的路由分组设置MISS路由。同时烧毁empty_controller设置。
作废控制器自动搜刮
因为机能缘由,作废了路由的多级控制器自动搜刮功用,请在路由划定规矩定义中明白指定要路由的多级控制器。
路由功用自力设想
路由功用不再牢固实行,而且设想成为AppInit事宜的相应监听,而且能够在项目的事宜定义内里设置,体系默许的定义设置以下:
return [ 'bind' => [ ], 'listen' => [ 'AppInit' => [ 'think\listener\LoadLangPack', 'think\listener\RouteCheck', ], 'AppBegin' => [ 'think\listener\CheckRequestCache', ], 'ActionBegin' => [], 'AppEnd' => [], 'LogLevel' => [], 'LogWrite' => [], 'ResponseSend' => [], 'ResponseEnd' => [], ], 'subscribe' => [ ], ];
在AppInit事宜中会实行think\listener\RouteCheck类,假如你的运用完整不须要运用任何的路由功用,能够在设置文件中作废定义即可,体系会实行默许的URL调理(也等于控制器/操纵)。
作废注册要领的option和pattern参数
作废路由注册要领(包括rule/get/post/put/delete/patch/miss/group等要领)的option和pattern参数,悉数改成要领挪用情势,比方本来的:
Route::get('hello/:name', 'index/hello', [ 'ext' => 'html'], [ 'name' => '\w+']);
须要改成
Route::get('hello/:name', 'index/hello') ->ext('html') ->pattern([ 'name' => '\w+']);
路由分组定义不再支撑数组
因为不利于分组的嵌套功用,路由分组定义不再支撑数组,只能运用闭包体式格局定义,比方:
Route::group('blog', [ ':id' => 'Blog/read', ':name' => 'Blog/read', ])->ext('html')->pattern(['id' => '\d+']);
必需改成
Route::group('blog', function() { Route::get(':id', 'Blog/read'); Route::get(':name', 'Blog/read'); })->ext('html')->pattern(['id' => '\d+']);
假如你须要注册一个假造的路由分组,能够直接在第一个参数运用闭包
Route::group(function() { Route::get('blog/:id', 'Blog/read'); Route::get('user/:name', 'User/read'); })->ext('html')->pattern(['id' => '\d+']);
作废了url_controller_layer设置
改成在进口文件中运用controllerLayer要领设置。
(new App())->controllerLayer('Action') ->run() ->send();
作废class_suffix设置
改成在进口文件中运用useClassSuffix要领设置。
(new App())->useClassSuffix(true) ->run() ->send();
同时作废controller_suffix和class_suffix设置参数。
作废mergeExtraVars要领和对应参数
改成在路由划定规矩中明白指定变量划定规矩。
header要领参数范例调解
因为强范例束缚的缘由,header要领改成仅支撑数组参数传入。
运用强范例参数
因为周全启用强范例参数,而且运用严厉形式,所以肯定要注意参数的范例。
浩瀚ThinkPHP入门教程,尽在ki4网,迎接在线进修!
本文转自:https://blog.thinkki4.cn/916515
以上就是ThinkPHP5.2:路由的调解和革新的细致内容,更多请关注ki4网别的相干文章!