Heim  >  Artikel  >  PHP-Framework  >  ThinkPHP5.2: Routing-Anpassungen und Verbesserungen

ThinkPHP5.2: Routing-Anpassungen und Verbesserungen

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼nach vorne
2019-12-16 15:10:242446Durchsuche

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',
];

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:thinkphp.cn. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen