Der Routing-Teil von ThinkPHP5.2 wurde wie andere Komponenten gestrafft und optimiert und umfasst hauptsächlich die folgenden Aspekte:
Stornieren Sie die Routenrückgabe Definition Da das Array-Format
der Routen-Cache-Generierung nicht förderlich ist, bricht die Routendefinitionsdatei die Methode zur Rückgabe eines Arrays zum Definieren von Routen ab und die Routing-Methode muss zum Registrieren verwendet werden Route.
Zum Beispiel:
return [ 'hello/:name' => 'index/hello', ];
muss geändert werden in:
Route::get('hello/:name', 'index/hello');
Speicherort der Routendefinitionsdatei für mehrere Anwendungen
Im Einzelanwendungsmodus befindet sich die Routendefinitionsdatei wie zuvor im Routenverzeichnis. Wenn Ihr Projekt mehrere Anwendungen verwendet, sind die Routendefinition und der Abgleich jeder Anwendung unabhängig und es gibt kein Konzept für den Speicherort der Routendefinitionsdatei Es sollte sich im Unterverzeichnis Route/Anwendung befinden, zum Beispiel:
route/index/route.php // index应用的路由定义文件 route/index/web.php // index应用的第二个路由定义文件 route/admin/route.php // admin应用的路由定义文件
Die Standard-URL-Regel wird zu
http://域名/入口文件(或者应用名)/控制器名/操作名
Die Routing-Regel der Anwendung ist eigentlich die definierte Eintragsdatei (oder der Teil der URL nach dem Anwendungsnamen), mit Ausnahme der Anwendung.
Automatische Mehrfachanwendung
Die neueste Version 5.2 kann den Zugriff auf mehrere verschiedene Anwendungen in derselben Eintragsdatei unterstützen (zuvor musste für jede Anwendung eine hinzugefügt werden). Entsprechende Eintragsdatei).
Wenn Sie beispielsweise Folgendes verwenden:
(new App())->autoMulti()->run()->send();
in der index.php-Eintragsdatei, können Sie automatisch über URLs auf mehrere Anwendungen zugreifen, ohne eine Eintragsdatei zu erstellen
http://serverName/index.php/admin
Wenn Sie Die Standardanwendung ist kein Index (Standard ist der Name der Eintragsdatei). Anschließend können Sie die Standardanwendung über die Namensmethode angeben.
(new App())->autoMulti() ->name('admin') ->run() ->send();
unterstützt die Alias-Zuordnung von Anwendungsnamen, zum Beispiel:
(new App())->autoMulti([ 'think' => 'admin', // 把admin应用映射为think ])->run()->send();
Wenn Sie eine Anwendung anpassen müssen, können Sie
(new App())->autoMulti([ 'admin' => function($app) { $app->debug(true)->useClassSuffix(); } ])->run()->send();
Alias-Routing abbrechen
Aufgrund begrenzter Nutzungsszenarien und Leistungsproblemen wird die ursprüngliche Alias-Routing-Funktion abgebrochen und es wird empfohlen, stattdessen Ressourcen-Routing oder eine separate Route zu verwenden.
Shortcut-Routing abbrechen
Aufgrund begrenzter Nutzungsszenarien und Nichteinhaltung der Spezifikationen wurde die ursprüngliche Controller-Shortcut-Routing-Funktion abgebrochen.
Leer-Controller und Leerbetrieb abbrechen
Die ursprüngliche Leer-Controller- und Leerbetrieb-Funktion wurde abgebrochen. Bitte verwenden Sie stattdessen die MISS-Routing-Funktion, die unterstützt werden kann Verschiedene Routing-Gruppensätze MISS-Routing. Gleichzeitig wird die Konfiguration empty_controller verworfen.
Automatische Controller-Suche abbrechen
Aus Leistungsgründen wurde die automatische Routensuchfunktion des Multi-Level-Controllers abgebrochen. Bitte geben Sie die zu routende Route eindeutig an die Routing-Regeldefinition.
Die Routing-Funktion ist unabhängig konzipiert
Die Routing-Funktion ist nicht mehr fest und als Antwort-Listener für das AppInit-Ereignis konzipiert und kann im Ereignis konfiguriert werden Definition des Projekts. Die Definition und Konfiguration lauten wie folgt:
return [ 'bind' => [ ], 'listen' => [ 'AppInit' => [ 'think\listener\LoadLangPack', 'think\listener\RouteCheck', ], 'AppBegin' => [ 'think\listener\CheckRequestCache', ], 'ActionBegin' => [], 'AppEnd' => [], 'LogLevel' => [], 'LogWrite' => [], 'ResponseSend' => [], 'ResponseEnd' => [], ], 'subscribe' => [ ], ];
Die thinklistenerRouteCheck-Klasse wird im AppInit-Ereignis ausgeführt. Wenn Ihre Anwendung überhaupt keine Routing-Funktion benötigt, können Sie dies tun Brechen Sie die Definition in der Konfigurationsdatei ab und das System führt die Standard-URL aus (d. h. Controller/Aktion).
Option und Musterparameter der Registrierungsmethode abbrechen
Die Routenregistrierungsmethode abbrechen (einschließlich Regel/Get/Post/Put/Löschen/Patch/Miss/Gruppe). und andere Methoden) Die Options- und Musterparameter werden alle in die Methodenaufrufform geändert. Beispielsweise muss das Original:
Route::get('hello/:name', 'index/hello', [ 'ext' => 'html'], [ 'name' => '\w+']);
in
Route::get('hello/:name', 'index/hello') ->ext('html') ->pattern([ 'name' => '\w+']);
Routengruppendefinitionsnr. geändert werden Unterstützt keine Arrays mehr
Da es der Verschachtelungsfunktion von Gruppen nicht förderlich ist, unterstützen Routinggruppendefinitionen keine Arrays mehr und können nur noch mithilfe von Abschlüssen definiert werden:
Route::group('blog', [ ':id' => 'Blog/read', ':name' => 'Blog/read', ])->ext('html')->pattern(['id' => '\d+']);
muss kann bei Bedarf in
Route::group('blog', function() { Route::get(':id', 'Blog/read'); Route::get(':name', 'Blog/read'); })->ext('html')->pattern(['id' => '\d+']);
geändert werden. Um eine virtuelle Routinggruppe zu registrieren, können Sie direkt den Abschluss im ersten Parameter verwenden
Route::group(function() { Route::get('blog/:id', 'Blog/read'); Route::get('user/:name', 'User/read'); })->ext('html')->pattern(['id' => '\d+']);
Brechen Sie die URL_Controller_Layer-Konfiguration ab
und verwenden Sie stattdessen die ControllerLayer-Methode in der Eintragsdatei.
(new App())->controllerLayer('Action') ->run() ->send();
Klassensuffix-Konfiguration abbrechen
Verwenden Sie stattdessen die Methode useClassSuffix in der Eintragsdatei.
(new App())->useClassSuffix(true) ->run() ->send();
Löschen Sie gleichzeitig die Konfigurationsparameter „controller_suffix“ und „class_suffix“.
Brechen Sie die Methode mergeExtraVars und die entsprechenden Parameter ab
Geben Sie stattdessen explizit Variablenregeln in Routing-Regeln an.
Anpassung des Parametertyps der Header-Methode
Aufgrund starker Typbeschränkungen wird die Header-Methode so geändert, dass sie nur die Übergabe von Array-Parametern unterstützt.
Verwenden Sie stark typisierte Parameter
Da stark typisierte Parameter vollständig aktiviert sind und der strikte Modus verwendet wird, achten Sie unbedingt auf den Typ der Parameter.
Viele ThinkPHP-Einführungs-Tutorials sind auf der chinesischen PHP-Website verfügbar. Willkommen zum Online-Lernen!
Dieser Artikel wurde reproduziert von: https://blog.thinkphp.cn/916515
Das obige ist der detaillierte Inhalt vonThinkPHP5.2: Routing-Anpassungen und Verbesserungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!