0x00 Routing-Implementierungsprinzip
Benutzer greifen über das angegebene URL-Paradigma auf das Backend zu. Nach der Verarbeitung durch die URL-Routing-Verarbeitungsklasse wird es an die Logikverarbeitungsklasse weitergeleitet, an die die Anforderungsergebnisse zurückgegeben werden der Benutzer.
Vereinbaren Sie eine Reihe von URL-Regeln, die Ihnen gefallen, suchmaschinenfreundlich und benutzerfreundlich sind
Parst die vom Benutzer angeforderte URL, ruft die vom Benutzer angeforderten Klassen-, Methoden- und Abfrageparameter ab und leitet die Anforderung an die logische Verarbeitungsklasse weiter.
verwaltet die eigentliche Geschäftslogik der Website.
0x01 URL-Paradigmenkonvention
Derzeit gibt es zwei beliebte URL-Formate, eines ist der normale Modus und das andere ist der pathinfo
-Modus.
Im ThinkPHP
-Framework ist das Standard-URL-Format der Normalmodus. Die URL für den Normalmodus lautet wie folgt:
<code>index.php?m=home&c=user&<span>a</span>=login&v=<span>value</span></code>
wobei das m
Parameter ist Der Wert ist der Modulname, der Wert des c
-Parameters ist der Controller-Name, der Wert des a
-Parameters ist der Methodenname und die nachfolgenden Parameter sind andere GET
-Anforderungsparameter, die empfangen werden sollen in der Methode
Im CodeIgniter
-Framework ist das Standard-URL-Format das pathinfo
-Muster wie folgt:
<code><span>index</span>.php/controller/<span><span>method</span>/<span>prarme1</span>/<span>value1</span></span></code>
Die Bedeutung von Dieser Block wurde auch deutlich markiert, in method
Von nun an sind es die GET
Parameter, die von der Methode empfangen werden, das Format ist 名称/值
0x02 URL-Routing-Verarbeitungsklasse (Kern)
Hier wählen wir den einfachsten gewöhnlichen Einzelmodulmodus. Die Demonstration dient lediglich der Veranschaulichung des einfachen Prinzips wie folgt:
<code>index.php?c=user&<span>a</span>=login&v=<span>value</span></code>
Wir sind uns einig, dass der Parameter c
der Name des Controllers ist , der Parameter a
ist der Name der Methode, und die folgenden sind alle GET
Parameter
<code><span><span><?php</span><span>include</span><span>'index.class.php'</span>; <span>include</span><span>'user.class.php'</span>; <span>// 对用户请求URL进行处理</span><span>$query</span> = <span>$_GET</span>; <span>$controller</span> = <span>isset</span>(<span>$query</span>[<span>'c'</span>]) ? <span>$query</span>[<span>'c'</span>] : <span>'indexController'</span>; <span>$action</span> = <span>isset</span>(<span>$query</span>[<span>'a'</span>]) ? <span>$query</span>[<span>'a'</span>] : <span>'index'</span>; <span>if</span> (class_exists(<span>$controller</span>)) { <span>if</span> (method_exists(<span>$controller</span>, <span>$action</span>)) { <span>unset</span>(<span>$_GET</span>[<span>'c'</span>]); <span>unset</span>(<span>$_GET</span>[<span>'a'</span>]); <span>// 实例化用户请求类并调用方法</span> (<span>new</span><span>$controller</span>())-><span>$action</span>(); } <span>else</span> { <span>echo</span><span>'控制器'</span> . <span>$controller</span> . <span>'中不存在方法'</span> . <span>$action</span>; } } <span>else</span> { <span>echo</span><span>'不存在控制器'</span> . <span>$controller</span>; }</span></span></code>
Unter ihnen entfernt unset()
zwei Get-Parameter, nur um andere Auswirkungen auf die Methode zu haben heißt tatsächlich.
0x03 Logikverarbeitungsklasse
Die Logikverarbeitungsklasse ist die endgültige Geschäftslogik, also das Codefragment, das tatsächlich auf Benutzeranfragen reagiert. Das Folgende ist nur ein einfaches Beispiel:
<code><span>/* index.class.php 文件源码 */</span><span><?php</span><span><span>class</span><span>indexController</span> {</span><span>public</span><span><span>function</span><span>index</span><span>()</span>{</span> var_dump(<span>$_GET</span>); } }</code>
<code><span>/* user.class.php 文件源码 */</span><span><?php</span><span><span>class</span><span>user</span> {</span><span>public</span><span><span>function</span><span>index</span><span>()</span> {</span><span>echo</span><span>'这里是User控制器'</span>; } <span>public</span><span><span>function</span><span>login</span><span>()</span> {</span> var_dump(<span>$_GET</span>); } }</code>
0x04 Ende
Dies ist nur das Prinzip der einfachsten PHP-Routing-Technologie, die möglicherweise tatsächlich entwickelt werden kann Das Routing für ein Projekt oder Framework muss mit vielen komplexen Situationen kompatibel sein und verschiedene Situationen müssen berücksichtigt werden.
Originalautor: Ich bin Erliang
Ursprünglicher Link: http://www.2liang.me/?p=230
Nachdrucke müssen im Text gekennzeichnet sein und den ursprünglichen Link, den Autor und andere Informationen enthalten.
Das Obige hat die Prinzipien und Praktiken der PHP-Routing-Technologie vorgestellt, einschließlich ihrer Aspekte. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.