hi,你好!欢迎访问本站!登录
本站由简数采集腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - PHP框架 - ThinkPHP - 正文 请牢记本站网址www.sosophp.cn

ThinkPHP5.2:路由的调解和革新【ThinkPHP教程】,ThinkPHP5.2,路由

2019-12-17ThinkPHP搜搜PHP网40°c
A+ A-

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网别的相干文章!

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  选择分享方式
  移步手机端
ThinkPHP5.2:路由的调解和革新【ThinkPHP教程】,ThinkPHP5.2,路由

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章