Um zu verstehen, was ein Router tut, müssen Sie zunächst verstehen, was eine Rewrite-Engine ist. Aus dem Wikipedia-Artikel (Schwerpunkt meiner):
Eine Rewrite-Engine ist eine Software, die das Erscheinungsbild einer Web-URL ändert (URL-Rewriting). Umgeschriebene URLs (manchmal auch als kurze, schicke URLs oder suchmaschinenfreundliche URLs bezeichnet) werden verwendet, um kürzere und relevanter aussehende Links zu Webseiten bereitzustellen. Die Technik fügt einen Grad an Trennung zwischen den Dateien, die zum Generieren einer Webseite verwendet werden, und der URL hinzu, die der Welt präsentiert wird .
Bei Verwendung einer Rewrite-Engine besteht keine 1: 1-Korrelation zwischen der URL und einem PHP-Skript. Ein Beispiel aus demselben Artikel:
http://example.com/wiki/index.php?title=Page_title
kann umgeschrieben werden als:
http://example.com/wiki/Page_title
Es gibt verschiedene Vorteile , die Technik zu verwenden. Da PHP normalerweise eng mit Apache gekoppelt ist, ist die am häufigsten verwendete Umschreibe-Engine das mod_rewrite von Apache .
Wenn Sie URLs umschreiben möchten, benötigen Sie eine Art Routing, da beim Routing die URL in Komponenten aufgeteilt und das eigentliche Skript ausgewählt wird. Die Dokumentationsseite für den Standard-Router des Zend Framework erklärt den Vorgang wie folgt:
Beim Routing wird ein URI-Endpunkt (der Teil des URI, der nach der Basis-URL steht) in Parameter zerlegt, um zu bestimmen, welches Modul, welcher Controller und welche Aktion dieses Controllers die Anforderung erhalten soll.
Die meisten PHP-Frameworks basieren heutzutage auf dem MVC-Pattern , und auf einem MVC-Framework sieht der Prozess ungefähr so aus * :
- Der Browser zeigt auf eine URL,
- Der Webserver fängt die Anforderung ab und leitet sie an einen gemeinsamen Einstiegspunkt weiter, in der Regel ein
index.php
Skript.
index.php
Ruft die URL ab und startet den Routing-Prozess.
- URL wird in Parameter zerlegt, wobei der erste die Steuerung ist, der zweite die Aktionsmethode ist und der Rest als dynamische Parameter betrachtet wird.
- Wenn eine mit dem ersten Parameter übereinstimmende Controller-Klasse vorhanden ist, wird ein Controller-Objekt instanziiert.
- Die Aktionsmethode, die normalerweise eine Funktion des Controller-Objekts ist, wird aufgerufen und ihre Rückgabe entspricht der tatsächlichen Rückgabe an den Browser.
Das Anpassen von Parametern an Steuerungen und Methoden verwendet normalerweise das Anpassen über reguläre Ausdrücke , um komplexe und dynamische Routing-Muster, sogenannte Routen, verarbeiten zu können. Gute Beispiele für Routen finden Sie auf der Dokumentationsseite zum URI-Routing CodeIgniter :
$ route ['journals'] = "Blogs";
$ route ['blog / joe'] = "blogs / users / 34";
$ route ['product / (: any)'] = "catalog / product_lookup";
$ route ['product / (: num)'] = "catalog / product_lookup_by_id / $ 1";
Das $route
Array enthält die Muster als Schlüssel und die daraus resultierenden Aktionen als Werte im controller/action_method/dynamic_parameter
Format.
* Dies ist keine Beschreibung des kanonischen Prozesses, sondern nur eine vereinfachte Erklärung.