ThinkPHP5.2: Routing-Anpassungen und Verbesserungen

爱喝马黛茶的安东尼
Freigeben: 2019-12-16 15:10:24
nach vorne
2468 Leute haben es durchsucht

ThinkPHP5.2: Routing-Anpassungen und Verbesserungen

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',
];
Nach dem Login kopieren

muss geändert werden in:

Route::get('hello/:name', 'index/hello');
Nach dem Login kopieren

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应用的路由定义文件
Nach dem Login kopieren

Die Standard-URL-Regel wird zu

http://域名/入口文件(或者应用名)/控制器名/操作名
Nach dem Login kopieren

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();
Nach dem Login kopieren

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
Nach dem Login kopieren

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();
Nach dem Login kopieren

unterstützt die Alias-Zuordnung von Anwendungsnamen, zum Beispiel:

(new App())->autoMulti([
    'think'    =>    'admin',  // 把admin应用映射为think
])->run()->send();
Nach dem Login kopieren

Wenn Sie eine Anwendung anpassen müssen, können Sie

(new App())->autoMulti([
    'admin'    =>   function($app) {
        $app->debug(true)->useClassSuffix();
    }
])->run()->send();
Nach dem Login kopieren

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' => [
    ],
];
Nach dem Login kopieren

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+']);
Nach dem Login kopieren

in

Route::get('hello/:name', 'index/hello')
    ->ext('html')
    ->pattern([ 'name'  => '\w+']);
Nach dem Login kopieren

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+']);
Nach dem Login kopieren

muss kann bei Bedarf in

Route::group('blog', function() {
    Route::get(':id', 'Blog/read');
    Route::get(':name', 'Blog/read');
})->ext('html')->pattern(['id' => '\d+']);
Nach dem Login kopieren

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+']);
Nach dem Login kopieren

Brechen Sie die URL_Controller_Layer-Konfiguration ab

und verwenden Sie stattdessen die ControllerLayer-Methode in der Eintragsdatei.

(new App())->controllerLayer('Action')
    ->run()
    ->send();
Nach dem Login kopieren

Klassensuffix-Konfiguration abbrechen

Verwenden Sie stattdessen die Methode useClassSuffix in der Eintragsdatei.

(new App())->useClassSuffix(true)
    ->run()
    ->send();
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:thinkphp.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage