Routing-Paket-Technologie
Routengruppierung
Verwenden Sie die Gruppenmethode der Route-Klasse, um sich zu registrieren und einige allgemeine Routeneinstellungsparameter für das Gruppenrouting zu definieren , wie zum Beispiel:
Route::group('blog', function () { Route::rule(':id', 'blog/read'); Route::rule(':name', 'blog/read'); })->ext('html')->pattern(['id' => '\d+', 'name' => '\w+']);
Gruppen-Routing unterstützt alle Routing-Parametereinstellungen. Informationen zur spezifischen Parameterverwendung finden Sie im Kapitel Routing-Parameter.
Wenn es nur zum Festlegen einiger allgemeiner Routing-Parameter (auch virtuelle Gruppen genannt) für einige Routing-Regeln verwendet wird, können Sie auch Folgendes verwenden:
Route::group(function () { Route::rule('blog/:id', 'blog/read'); Route::rule('blog/:name', 'blog/read'); })->ext('html')->pattern(['id' => '\d+', 'name' => '\w+']);
Routing-Gruppen unterstützen die Verschachtelung, zum Beispiel:
Route::group(function () { Route::group('blog', function () { Route::rule(':id', 'blog/read'); Route::rule(':name', 'blog/read'); }); })->ext('html')->pattern(['id' => '\d+', 'name' => '\w+']);
Wenn verschachtelte Gruppen verwendet werden, erbt die untergeordnete Gruppe die Parameter und Variablenregeln der übergeordneten Gruppe und die in den endgültigen Routing-Regeln definierten Parameter und Variablenregeln haben Vorrang.
kann die Präfixmethode verwenden, um die Definition derselben Routing-Adresse zu vereinfachen. Beispielsweise kann die folgende Definition
Route::group('blog', function () { Route::get(':id', 'blog/read'); Route::post(':id', 'blog/update'); Route::delete(':id', 'blog/delete'); })->ext('html')->pattern(['id' => '\d+']);
zu
Route::group('blog', function () { Route::get(':id', 'read'); Route::post(':id', 'update'); Route::delete(':id', 'delete'); })->prefix('blog/')->ext('html')->pattern(['id' => '\d+']);vereinfacht werden
Genaue Routenübereinstimmung
Wenn Sie möchten, dass alle Routen einer bestimmten Gruppe genau übereinstimmen, können Sie
Route::group('blog', function () { Route::get(':id', 'read'); Route::post(':id', 'update'); Route::delete(':id', 'delete'); })->completeMatch()->prefix('blog/')->ext('html')->pattern(['id' => '\d+']);<🎜 verwenden >
Verzögerte Routenauflösung
// 开启路由延迟解析 'url_lazy_route' => true,Wenn Sie nach der Aktivierung der verzögerten Routenanalyse eine Routenentschlüsselungs-URL generieren müssen, können Sie dies tun Sie müssen den Befehlszeilenbefehl
php think optimize:routeverwenden, um die Routing-Cache-Auflösung zu generieren. Das Definieren von Routen über Routinggruppen oder das Routing von Domänennamen kann von der verzögerten Auflösung profitieren. Sobald die verzögerte Auflösung des Routings aktiviert ist, werden die definierten Domänennamen-Routen und Gruppenrouten verzögert und aufgelöst. Das heißt, Routing-Regeln werden erst registriert, nachdem der Domänenname oder die Gruppe tatsächlich abgeglichen wurde Vermeiden Sie unnötigen Registrierungs- und Analyseaufwand.
Zusammengeführte Analyse von Routing-Regeln
Routing-Regeln unter derselben Routing-Gruppe unterstützen die zusammengeführte Analyse, ohne alle Routing-Regeln unter der Routing-Gruppe zu durchlaufen, was die Leistung der Routenauflösung erheblich verbessern kann . Die Verwendung der separaten Aktivierung der Zusammenführungsregelanalyse für eine bestimmte Gruppe ist wie folgt:Route::group('user', function () { Route::rule('hello/:name','hello'); Route::rule('think/:name','think'); })->mergeRuleRegex();Auf diese Weise müssen alle Routingregeln unter der Gruppe nur einmal abgeglichen und überprüft werden, egal wie Viele sind definiert (eigentlich nur Rendezvous- und Check-Routing-Regeln, die dem aktuellen Anforderungstyp entsprechen). Die mergeRuleRegex-Methode kann nur für Routinggruppen oder Domänennamen-Routing verwendet werden (Domänennamen-Routing ist eigentlich eine spezielle Gruppe). Oder globale Zusammenführungsregeln in der Routing-Konfigurationsdatei festlegen und aktivieren (gültig für alle Gruppen)
// 开启路由合并解析 'route_rule_merge' => true,
Zusätzliche Parameter übergeben
Route::group('blog', [ ':id' => 'Blog/read', ':name' => 'Blog/read', ])->ext('html') ->pattern(['id' => '\d+']) ->append(['group_id' => 1]);Das obige Gruppenrouting übergibt einheitlich den Parameter „group_id“, und der Wert dieses Parameters kann über die param-Methode der Request-Klasse abgerufen werden.