Prinzipien und Praxis der PHP-Routing-Technologie

WBOY
Freigeben: 2016-07-30 13:30:59
Original
1070 Leute haben es durchsucht

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 URL-Paradigmen und -Regeln

Vereinbaren Sie eine Reihe von URL-Regeln, die Ihnen gefallen, suchmaschinenfreundlich und benutzerfreundlich sind

URL-Verarbeitungsklasse (d. h. die Kern der Routing-Implementierung )

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.

Logikverarbeitungsklasse

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.

Normalmodus

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>
Nach dem Login kopieren

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

pathinfo Pattern

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren
<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>
Nach dem Login kopieren

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.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage