ThinkPhp ist ein h?ufig verwendetes PHP-Framework und Routing ist ein wichtiger Bestandteil beim Erstellen von Webanwendungen. In diesem Artikel werden die grundlegenden Konzepte des ThinkPhp-Routings und dessen Verwendung vorgestellt. Au?erdem erhalten Sie einige praktische Tipps, die den Lesern helfen sollen, ThinkPhp-Routing besser zu verstehen und anzuwenden.
1. Grundkonzepte des ThinkPhp-Routings
Routing ist der Prozess der Zuordnung von HTTP-Anfragen zu Handlern. In der traditionellen MVC-Architektur spielt Routing eine entscheidende Rolle. Wir k?nnen Routing als Zuordnung zwischen einer Adresse und einer Anwendung verstehen. Die vom Client angeforderte Adresse wird an die entsprechende Controller-Methode weitergeleitet und anschlie?end der entsprechende Inhalt ausgegeben.
ThinkPhp-Routing besteht haupts?chlich aus drei Teilen: Controller (Controller), Betriebsmethode (Aktion) und Parameter (Param).
1. Controller: Der Controller ist die erste Schicht, die das Anforderungsrouting angibt und eine Controller-Klasse darstellt. Die Funktion des Controllers besteht darin, Webanfragen zu empfangen, die Anfragen zu verarbeiten und den dritten Parameter Action (Operationsmethode) zurückzugeben.
2. Aktionsmethode (Aktion): Jeder Controller enth?lt eine Aktionsmethode. Nachdem der Controller die Anfrage erhalten hat, übergibt er die Anfrage zur Verarbeitung an die Aktionsmethode und gibt das Ergebnis zurück.
3. Parameter (Param): Parameter sind Flags, die zur Unterscheidung unterschiedlicher Verhaltensweisen von Betriebsmethoden innerhalb desselben Controllers verwendet werden. Mithilfe von Parametern k?nnen wir beispielsweise zwischen zwei verschiedenen Vorg?ngen unterscheiden: der Abfrage von Benutzern mit einer bestimmten ID-Nummer und der Abfrage aller Benutzerinformationen.
In ThinkPhp werden Routen durch URL-Zugriff definiert. Die URL enth?lt die Informationen der oben genannten drei Teile.
Zum Beispiel:
http://www.example.com/index.php/index.php/controller/action/param1/value1/param2/value2
http://www.example.com/index.php/index.php/controller/action/param1/value1/param2/value2
其中,index.php
表示單一入口文件,controller
表示控制器,action
表示操作方法,param
表示參數(shù),value
表示對應(yīng)參數(shù)的值。
二、ThinkPhp路由使用方法
下面介紹ThinkPhp路由的使用方法:
1.基礎(chǔ)路由
應(yīng)用中的所有路由默認(rèn)會映射到一個具體的控制器和方法上。例如,請求URL為/index.php/index/index
,它將被映射到Index類的index方法上。
2.靜態(tài)路由
靜態(tài)路由是指URL中不包含參數(shù)的一類路由。這類路由可以使用某種正則表達(dá)式來匹配URL。靜態(tài)路由將URL映射到指定的控制器和方法,并且在執(zhí)行期間不會有任何變化。
例如:
use?think\facade\Route; Route::get('blog/:id','index/blog/read');
以上代碼定義了一個靜態(tài)路由,它將路由到Index的blog控制器的read方法,實際上它將匹配請求為/index.php/blog/4
的URL,其中4是參數(shù)id的值。
3.動態(tài)路由
動態(tài)路由是指包含參數(shù)的路由。例如,我們想要獲取當(dāng)前用戶的個人資料頁面,我們可以使用以下路由:
use?think\facade\Route; Route::rule('user/:id',?'index/user/index');
這個路由定義了URL中包含用戶id的參數(shù),例如:/index.php/user/123
,其中123將作為參數(shù)id的值傳遞給user控制器的index方法。
4.正則路由
正則路由是按規(guī)則匹配請求URL的路由。它可以檢查并匹配請求URL的部分內(nèi)容,并根據(jù)規(guī)則定義的匹配結(jié)果來映射到特定的控制器和操作方法上。
例如,下面的路由將匹配URL中包含數(shù)字的請求,例如/index.php/test/123
。如果將URL中的數(shù)字替換為字母,則不會匹配。
use?think\facade\Route; Route::rule('^test/(\d+)$',?'Test/index/:1');
上面的路由將匹配請求URL中包含數(shù)字的URL,并將數(shù)字作為控制器的第一個參數(shù)使用。例如,請求URL為/index.php/test/123
index .php
repr?sentiert eine einzelne Eintragsdatei, controller
repr?sentiert den Controller, action
repr?sentiert die Operationsmethode, param
repr?sentiert den Parameter, und value
stellt den Wert des entsprechenden Parameters dar. 2. So verwenden Sie das ThinkPhp-RoutingIm Folgenden wird erl?utert, wie Sie das ThinkPhp-Routing verwenden:1. Grundlegendes RoutingAlle Routen in der Anwendung werden standardm??ig einem bestimmten Controller und einer bestimmten Methode zugeordnet. Die Anforderungs-URL lautet beispielsweise /index.php/index/index
und wird der Indexmethode der Index-Klasse zugeordnet. 2. Statisches Routing Statisches Routing bezieht sich auf einen Routentyp, der keine Parameter in der URL enth?lt. Diese Art von Route kann eine Art regul?ren Ausdruck verwenden, um URLs abzugleichen. Statische Routen ordnen URLs bestimmten Controllern und Methoden zu und ?ndern sich w?hrend der Ausführung nicht. Zum Beispiel:
use?think\facade\Route; Route::group('',?function?()?{ ????Route::rule('index',?'index/index/index'); ????Route::rule('user',?'index/user/index'); ????Route::rule('company',?'index/company/index'); });Der obige Code definiert eine statische Route, die zur Lesemethode des Blog-Controllers von Index weiterleitet. Tats?chlich entspricht sie der Anforderung als
/index.php/blog/4Code> URL, wobei 4 der Wert der Parameter-ID ist. <p></p>3. Dynamisches Routing <p></p>Dynamisches Routing bezieht sich auf eine Route, die Parameter enth?lt. Wenn wir beispielsweise die Profilseite des aktuellen Benutzers abrufen m?chten, k?nnen wir die folgende Route verwenden: <p></p>
<pre class="brush:php;toolbar:false">use?think\facade\Route;
Route::rule('admin/:controller/:action',?'admin/:controller/:action')->middleware('CheckLogin');</pre>Diese Route definiert Parameter, die die Benutzer-ID in der URL enthalten, zum Beispiel: <code>/index.php/user/ 123
, wobei 123 als Wert der Parameter-ID an die Indexmethode des Benutzercontrollers übergeben wird. 4. Regul?res RoutingRegul?res Routing ist eine Route, die der Anforderungs-URL gem?? den Regeln entspricht. Es kann einen Teil der Anforderungs-URL prüfen und abgleichen und ihn basierend auf den durch die Regeln definierten übereinstimmungsergebnissen bestimmten Controllern und Aktionsmethoden zuordnen. Zum Beispiel stimmt die folgende Route mit Anfragen überein, die Zahlen in der URL enthalten, wie zum Beispiel /index.php/test/123
. Wenn Sie die Zahlen in der URL durch Buchstaben ersetzen, gibt es keine übereinstimmung.
use?think\facade\Route; $router?=?Route::group('home',?function(){ ????Route::rule('news/:id','index/news/detail')->pattern(['id'?=>?'\d+']); ????Route::rule('jobs/:year/:month/:day/:id',?'index/jobs/detail') ????????->pattern(['year'?=>?'\d+',?'month'?=>?'\d+',?'day'?=>?'\d+',?'id'?=>?'\d+']); ????Route::rule('products','index/products/index'); });Die obige Route gleicht URLs ab, die eine Zahl in der Anforderungs-URL enthalten, und verwendet die Zahl als ersten Parameter des Controllers. Die Anforderungs-URL lautet beispielsweise
/index.php/test/123
, die der Indexmethode des Test-Controllers zugeordnet wird und 123 als ersten Parameter verwendet. ????5. Gruppenrouting????Paketrouting bezieht sich auf die Aufteilung der Route in mehrere Teile und die Definition der Route verschiedener Controller in jedem Teil. Die Verwendung von Gruppenrouting vereinfacht die Routing-Konfiguration und erh?ht gleichzeitig die Lesbarkeit des Codes. ????Zum Beispiel kann Gruppenrouting auch verwendet werden, um unbegrenzte Routen zu definieren: ??use?think\facade\Route; Route::group('app',?function?()?{ ????Route::rule('blog/:year/:month/:day/:name',?'blog/detail'); ????Route::rule('profile',?'user/profile'); ????Route::rule('account/login',?'user/login'); }); Route::miss('home/index/missed');??Oben werden 3 Routen definiert, die verschiedenen Controllern zugeordnet sind. ????3. Praktische Tipps für ThinkPhp-Routing????1. Benutzerdefinierte Routing-Regeln????Sie k?nnen Ihre eigenen URL-Routing-Regeln über Route::rule() definieren. Verwenden Sie beispielsweise den folgenden Code, um den Standard-Controller und die Standardbetriebsmethode zu überschreiben: ??rrreee??Der obige Code definiert den Controller als Hintergrund-Mitarbeiterzugriff, und die Aktionen jedes Controllers müssen von der CheckLogin-Middleware überprüft werden. ????2. Routen dynamisch generieren????Wenn Sie mehrere Routen haben, die an denselben Controller oder dieselbe Aktionsmethode weitergeleitet werden müssen, k?nnen Sie diese durch dynamisches Routing definieren. Dadurch entf?llt die Notwendigkeit, für jede Route, bei der die Gro?- und Kleinschreibung beachtet wird, separate Anforderungsparameter zu definieren. ????Zum Beispiel k?nnen Sie den folgenden Code verwenden, um Routen dynamisch zu generieren: ??rrreee??Der obige Code verweist die Routen verschiedener Zustellungsmethoden auf eine bestimmte Operationsmethode im Index-Controller und verwendet regul?re Ausdrücke, um dynamische Parameter abzugleichen. ????3. Routenverteilung????Wenn Ihre Anwendung mehrere verschiedene Unteranwendungen enth?lt, k?nnen Sie die Verteilungsweiterleitung verwenden, um Anforderungen an verschiedene Unteranwendungen zu verteilen. ????Zum Beispiel kann die Routenverteilung mit dem folgenden Code implementiert werden: ??
use?think\facade\Route; Route::group('app',?function?()?{ ????Route::rule('blog/:year/:month/:day/:name',?'blog/detail'); ????Route::rule('profile',?'user/profile'); ????Route::rule('account/login',?'user/login'); }); Route::miss('home/index/missed');
其中,miss方法用來定義路由未匹配時執(zhí)行的邏輯。
四、結(jié)語
本文介紹了ThinkPhp路由的基本概念、使用方法以及一些實用技巧。掌握了路由的概念和使用方法,可以讓開發(fā)者更加高效地開發(fā)Web應(yīng)用程序。
Das obige ist der detaillierte Inhalt vonSo verwenden Sie das ThinkPhp-Routing. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)