Maison > cadre php > PensezPHP > le corps du texte

ThinkPHP5.2 : ajustements et améliorations du routage

爱喝马黛茶的安东尼
Libérer: 2019-12-16 15:10:24
avant
2436 Les gens l'ont consulté

ThinkPHP5.2 : ajustements et améliorations du routage

La partie routage de ThinkPHP5.2, comme les autres composants, a été rationalisée et optimisée, incluant principalement les aspects suivants :

Annuler le retour de route définition Parce que le format de tableau

n'est pas propice à la génération de cache de route, le fichier de définition de route annule la méthode de retour d'un tableau pour définir la route, et la méthode de routage doit être utilisée pour enregistrer l'itinéraire.

Par exemple :

return [
    'hello/:name' => 'index/hello',
];
Copier après la connexion

doit être remplacé par :

Route::get('hello/:name', 'index/hello');
Copier après la connexion

Emplacement du fichier de définition d'itinéraire pour plusieurs applications

Application unique En mode , le fichier de définition de route se trouve sous le répertoire de route comme auparavant. Si votre projet utilise plusieurs applications, la définition de route et la correspondance de chaque application sont indépendantes et il n'y a pas de concept de modules. Il doit se trouver dans le sous-répertoire route/application, par exemple :

route/index/route.php //  index应用的路由定义文件
route/index/web.php // index应用的第二个路由定义文件
route/admin/route.php //  admin应用的路由定义文件
Copier après la connexion

La règle d'URL par défaut devient

http://域名/入口文件(或者应用名)/控制器名/操作名
Copier après la connexion

La règle de routage de l'application est en fait le fichier d'entrée défini (ou la partie de l'URL après le nom de l'application), à l'exclusion de l'application.

Multi-application automatique

La dernière version 5.2 peut prendre en charge l'accès à plusieurs applications différentes dans le même fichier d'entrée (auparavant, il fallait en ajouter une pour chaque application Fichier d'entrée correspondant).

Par exemple, si vous utilisez :

(new App())->autoMulti()->run()->send();
Copier après la connexion

dans le fichier d'entrée index.php, vous pouvez accéder automatiquement à plusieurs applications via des URL sans créer de fichier d'entrée

http://serverName/index.php/admin
Copier après la connexion

Si votre l'application par défaut n'est pas index (la valeur par défaut est le nom du fichier d'entrée), vous pouvez alors spécifier l'application par défaut via la méthode de nom.

(new App())->autoMulti()
    ->name('admin')
    ->run()
    ->send();
Copier après la connexion

prend en charge le mappage d'alias des noms d'applications, par exemple :

(new App())->autoMulti([
    'think'    =>    'admin',  // 把admin应用映射为think
])->run()->send();
Copier après la connexion

Si vous devez personnaliser une application, vous pouvez utiliser

(new App())->autoMulti([
    'admin'    =>   function($app) {
        $app->debug(true)->useClassSuffix();
    }
])->run()->send();
Copier après la connexion

pour annuler le routage d'alias

En raison de scénarios d'utilisation limités et de problèmes de surcharge de performances, la fonction de routage d'alias d'origine est annulée et il est recommandé d'utiliser le routage de ressources ou une route distincte à la place.

Annulation du routage des raccourcis

En raison de scénarios d'utilisation limités et du non-respect des spécifications, la fonction de routage des raccourcis d'origine du contrôleur a été annulée.

Annuler le contrôleur vide et l'opération à vide

Le contrôleur vide d'origine et la fonction d'opération à vide ont été annulés. Veuillez utiliser la fonction de routage MISS à la place, et elle peut être prise en charge. différents regroupements de routage configurent le routage MISS. Dans le même temps, la configuration empty_controller est supprimée.

Annuler la recherche automatique du contrôleur

Pour des raisons de performances, la fonction de recherche automatique du contrôleur multi-niveaux de routage a été annulée. Veuillez spécifier clairement l'itinéraire à acheminer. la définition de la règle de routage.

La fonction de routage est conçue indépendamment

La fonction de routage n'est plus fixe et conçue pour être un écouteur de réponse pour l'événement AppInit, et peut être configurée dans l'événement définition du projet. Les valeurs par défaut du système La définition et la configuration sont les suivantes :

return [
    'bind'      => [
    ],
    'listen'    => [
        'AppInit'      => [
            'think\listener\LoadLangPack',
            'think\listener\RouteCheck',
        ],
        'AppBegin'     => [
            'think\listener\CheckRequestCache',
        ],
        'ActionBegin'  => [],
        'AppEnd'       => [],
        'LogLevel'     => [],
        'LogWrite'     => [],
        'ResponseSend' => [],
        'ResponseEnd'  => [],
    ],
    'subscribe' => [
    ],
];
Copier après la connexion

La classe thinklistenerRouteCheck sera exécutée dans l'événement AppInit. Si votre application n'a besoin d'aucune fonction de routage, vous pouvez le faire. annulez la définition dans le fichier de configuration et le système exécutera la planification URL par défaut (c'est-à-dire le contrôleur/l'action).

Annulez les paramètres d'option et de modèle de la méthode d'enregistrement

Annulez la méthode d'enregistrement de l'itinéraire (y compris règle/get/post/put/delete/patch/miss/group et autres méthodes) Les paramètres d'option et de modèle sont tous modifiés dans le formulaire d'appel de méthode. Par exemple, l'original :

Route::get('hello/:name', 'index/hello', [ 'ext'  =>  'html'], [ 'name'  => '\w+']);
Copier après la connexion

doit être remplacé par

Route::get('hello/:name', 'index/hello')
    ->ext('html')
    ->pattern([ 'name'  => '\w+']);
Copier après la connexion

Route group definition no. ne prend plus en charge les tableaux

Parce que cela n'est pas propice à la fonction d'imbrication des groupes, les définitions de groupes de routage ne prennent plus en charge les tableaux et ne peuvent être définies qu'à l'aide de fermetures. Par exemple :

Route::group('blog', [
    ':id' => 'Blog/read',
    ':name' => 'Blog/read',
])->ext('html')->pattern(['id' => '\d+']);
Copier après la connexion

doit. être remplacé par

Route::group('blog', function() {
    Route::get(':id', 'Blog/read');
    Route::get(':name', 'Blog/read');
})->ext('html')->pattern(['id' => '\d+']);
Copier après la connexion

si vous en avez besoin. Pour enregistrer un groupe de routage virtuel, vous pouvez directement utiliser la fermeture dans le premier paramètre

Route::group(function() {
    Route::get('blog/:id', 'Blog/read');
    Route::get('user/:name', 'User/read');
})->ext('html')->pattern(['id' => '\d+']);
Copier après la connexion

Annuler la configuration url_controller_layer

et utilisez plutôt la méthode controllerLayer dans le fichier d'entrée.

(new App())->controllerLayer('Action')
    ->run()
    ->send();
Copier après la connexion

Annulez la configuration class_suffix

Utilisez plutôt la méthode useClassSuffix dans le fichier d'entrée.

(new App())->useClassSuffix(true)
    ->run()
    ->send();
Copier après la connexion

Annulez les paramètres de configuration controller_suffix et class_suffix en même temps.

Annulez la méthode mergeExtraVars et les paramètres correspondants

Au lieu de cela, spécifiez explicitement les règles de variable dans les règles de routage.

Ajustement du type de paramètre de la méthode d'en-tête

En raison de fortes contraintes de type, la méthode d'en-tête est modifiée pour prendre en charge uniquement la transmission des paramètres de tableau.

Utiliser des paramètres fortement typés

Étant donné que les paramètres fortement typés sont entièrement activés et que le mode strict est utilisé, assurez-vous de faire attention au type des paramètres.

De nombreux tutoriels d'introduction à ThinkPHP sont disponibles sur le site Web PHP chinois. Bienvenue pour apprendre en ligne !

Cet article est reproduit à partir de : https://blog.thinkphp.cn/916515

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:thinkphp.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!