Heim > Artikel > PHP-Framework > So verwenden Sie das ThinkPhp-Routing
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
表示参数,value
表示对应参数的值。
二、ThinkPhp路由使用方法
下面介绍ThinkPhp路由的使用方法:
1.基础路由
应用中的所有路由默认会映射到一个具体的控制器和方法上。例如,请求URL为/index.php/index/index
,它将被映射到Index类的index方法上。
2.静态路由
静态路由是指URL中不包含参数的一类路由。这类路由可以使用某种正则表达式来匹配URL。静态路由将URL映射到指定的控制器和方法,并且在执行期间不会有任何变化。
例如:
use think\facade\Route; Route::get('blog/:id','index/blog/read');
以上代码定义了一个静态路由,它将路由到Index的blog控制器的read方法,实际上它将匹配请求为/index.php/blog/4
的URL,其中4是参数id的值。
3.动态路由
动态路由是指包含参数的路由。例如,我们想要获取当前用户的个人资料页面,我们可以使用以下路由:
use think\facade\Route; Route::rule('user/:id', 'index/user/index');
这个路由定义了URL中包含用户id的参数,例如:/index.php/user/123
,其中123将作为参数id的值传递给user控制器的index方法。
4.正则路由
正则路由是按规则匹配请求URL的路由。它可以检查并匹配请求URL的部分内容,并根据规则定义的匹配结果来映射到特定的控制器和操作方法上。
例如,下面的路由将匹配URL中包含数字的请求,例如/index.php/test/123
。如果将URL中的数字替换为字母,则不会匹配。
use think\facade\Route; Route::rule('^test/(\d+)$', 'Test/index/:1');
上面的路由将匹配请求URL中包含数字的URL,并将数字作为控制器的第一个参数使用。例如,请求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方法用来定义路由未匹配时执行的逻辑。
四、结语
本文介绍了ThinkPhp路由的基本概念、使用方法以及一些实用技巧。掌握了路由的概念和使用方法,可以让开发者更加高效地开发Web应用程序。
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!