Heim >PHP-Framework >Denken Sie an PHP >ThinkPHP-Routing-Parameter und Ressourcen-Routing-Analyse
"Routing ist ein wichtiger Teil der Projektentwicklung. Jedes Projekt verwendet Routing zum Verwalten von Schnittstellen. Als Nächstes lernen Sie in diesem Artikel das Routing aus dem Quellcode.
"
Derselbe Code beginnt hier, aber dieses Mal liegt der Schwerpunkt auf Routing-Parametern und variablen Regeln.
Diese beiden Punkte dienen nur dazu, kurz die Verwendung und den einfachen Ausführungsprozess zu erläutern.
Für ein tieferes Verständnis werde ich es nicht erklären, da diese beiden Punkte im üblichen Entwicklungsprozess nicht oft verwendet werden.
Denken Sie daran, dass wir oben die Verwendung von Routing-Parametern in der Datei gesehen haben thinkphp/library/think/route/RuleItem.php
!
Und das Dokument enthält auch viele unterstützte Parameter, wie unten gezeigt.
So verwenden Sie diesen Routing-Parameter!
Verwenden Sie dann die Route, die wir zuvor verwendet haben, und richten Sie die URL-Suffix-Erkennung ein, um den Abgleich mehrerer Suffixe zu unterstützen.
Wie sollen wir also auf die von uns eingerichtete Route zugreifen?
Wenn Sie nach den normalen Routing-Regeln zugreifen, wird ein Fehler gemeldet. Bitte lesen Sie weiter, um die richtige Zugriffsmethode zu erfahren.
Die korrekte Anforderungsadresse sollte http://www.source.com/index.php/hello/1.html
sein, das heißt, das von uns festgelegte Suffix-HTML muss mit der Anforderungsadresse verbunden werden.
Der spezifische Ausführungsprozess dieses Blocks kann einfach mit dem Code-Tracker betrachtet werden. Kaka wird ihn hier nicht demonstrieren.
In Bezug auf die Routing-Parameter zeigt Ihnen Kaka hier einen Fall, und es ist im Grunde genommen vorbei.
Globale Routing-Parameter
Das letzte, was in diesem Routing-Parameter-Abschnitt erklärt wird, sind die globalen Routing-Parameter.
Gehen Sie direkt zum Dokument, um es anzuzeigen.
Hier richtet Kaka zwei Routing-Regeln zum Testen ein, ein Parameter ist optional und einer erforderlich, und die Routing-Regeln werden so eingestellt, dass Dateisuffixe hinzugefügt werden.
Die Anforderungsadresse beim Übergeben von Parametern.
Adresse anfordern, ohne Parameter zu übergeben.
Das Obige ist, was für die Routing-Parameter geschrieben wurde.
Es gibt keine besonders ausführliche Erklärung. Es wird im Grunde erklärt, wie man es benutzt. Dieses Ding existiert also.
Variable Regeln
Die gleichen variablen Regeln, diese sind in Kakas täglicher Entwicklungsarbeit noch weniger verfügbar.
Variable Regeln KaKa glaubt, dass der einzige Vorteil darin besteht, Parameter zu filtern.
Das heißt, variable Regeln sind Verhaltensweisen, die nur existieren, wenn Routing-Regeln Parameter haben.
Kaka stellt dir hier einen einfachen Fall zur Verfügung.
Demo-Hülle
Parameter nach der Route anhängenpattern
Dann schauen wir uns an, wie diese Anfrage geschrieben wird.
Die eingehenden Parameter können ausgegeben werden, wenn es sich bei den Parametern um Zahlen handelt.
Bei der Eingabe von Buchstaben wird jedoch ein Fehler gemeldet.
Die Variablenregel besteht also darin, die Parameter nach der Routing-Regel zu filtern, die mithilfe regulärer Ausdrücke verarbeitet wird.
Bis hierhin werden hier lediglich die Routing-Parameter und Variablenregeln genannt.
Obwohl der Inhalt sehr einfach ist, handelt es sich bei den meisten davon um Anwendungsfälle zur Einführung in die Verwendung, und es gibt keine eingehende Untersuchung des Quellcodes.
Erstens verwende ich es während der täglichen Entwicklung selten.
Zweitens müssen wir es im folgenden Artikel weiter verstehen. Hier ist nur ein allgemeines Verständnis.
Eigentlich wird geschätzt, dass viele Menschen immer noch nicht verstehen, warum der interne Inhalt bei der Eingabe der Routing-Adresse angezeigt werden kann. Wir werden später ein detailliertes Verständnis dafür haben.
Die Einstellung des Ressourcenroutings ist ebenfalls sehr einfach.
Es ist auch bequemer, die Befehlszeile zum Erstellen von Dateien zu verwenden.
Der erstellte Controller selbst ist eine Ressourcenroutingdatei.
Dann wird weiterhin die Ressourcenmethode der Route-Datei ausgeführt.
Diese Methode verfügt außerdem über Routing-Regeln, Routing-Adressen, Routing-Parameter und variable Regeln.
Dann kommen Sie zur thinkphp/library/think/route/Resource.php
Klasse
Führen Sie in dieser Klasse rechtzeitig einige einfache Attributzuweisungen durch.
Dann ist da noch der von Kaka eingekreiste Ort. Als nächstes erklärt Kaka den eingekreisten Ort.
Da die Ressourcenklasse die RuleGroup-Klasse erbt, springt sie zur Klasse thinkphp/library/think/route/RuleGroup.php.
Kommen Sie zu der Aktion, die mit dieser Methode ausgeführt wird.
blog/<name> oder blog/<name></name></name>
blog/<name> 或者 blog/<name></name></name>
object(thinkrouteDomain)
object(thinkrouteDomain)
, Sie müssen weiterleiten Der erste Abschnitt des Artikels 3 dieses Artikels und der vollständige Name werden in diesem Schritt zugewiesen.
Legen Sie die Routing-Regeln für die Gruppe fest.
Kehren Sie zur oberen Datei zurück und lesen Sie den Quellcode weiter
Ergebnis zurückgeben
🎜🎜Nach der obigen Ausführung kehrt es zur oberen Ebene zurück, um die Lazy-Methode auszuführen🎜Wissen Sie zunächst, was der übergebene Parameter ist: ob die Route beim Parsen verzögert wird
Dann gelangen Sie zur Lazy-Methode
In dieser Methode rufen Sie parseGroupRule auf, und der übergebene Parameter ist die Routing-Regel der Gruppe. In diesem Abschnitt geht es um die Routing-Gruppierung, daher werden wir hier nicht darauf eingehen.
Abschließend wird Kaka die Ausführungs-Mindmap für alle zeichnen
$this->parent->getDomain()
Gemäß dem Namen der Methode wissen wir, dass diese Codezeile dazu dient, das zu erhalten gewünschter Domainname
Aber jeder weiß, wo dieser Domainname steht?
Wenn Sie diese Ressourcenroute anfordern, wird der Konstruktor der Route-Klasse ausgeführt
Es gibt eine solche Codezeile im Konstruktor, die den angeforderten Domänennamen abrufen soll
kommt zur Host-Methode
In der Host-Methode dies Parameter ist wahr
Hier müssen Sie nur aufpassen$this->server('HTTP_HOST')
即可,就是用来获取域名地址的
在咔咔圈出来的第二处可以看到,第一个条件是成立的,但是第二个条件是不成立的
所以会直接返回上一步获取出来的$this->host
打印$this->host
,这里为什么会执行俩次就不对此解释了,有疑问的可以使用函数debug_backtrace
Drucken$this- >host
, ich werde nicht erklären, warum es zweimal ausgeführt wird. Wenn Sie Fragen haben, können Sie die Funktion debug_backtrace
zum Anzeigen.
Zu diesem Zeitpunkt wird es noch Fragen geben, da es sich eindeutig um thinkphp/library/think/route/Resource.php
Es wird in dieser Klasse ausgeführt! thinkphp/library/think/route/Resource.php
这个类里边执行的啊!
设置域名地址是在thinkphp/library/think/Route.php
Das obige ist der detaillierte Inhalt vonThinkPHP-Routing-Parameter und Ressourcen-Routing-Analyse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!