Heim >Backend-Entwicklung >PHP-Tutorial >So erstellen Sie ein Routing-System für eine PHP-App von Grund auf
Wenn Sie gerade erst am Anfang Ihrer Reise in die PHP-Entwicklung stehen, Es besteht die Möglichkeit, dass Sie vollständige Dateinamen in der URL zum Navigieren verwenden Anwendung, wie server/contact.php. Keine Sorge, wir haben alle so angefangen und so lernen wir.
Heute möchte ich Ihnen dabei helfen, die Navigation in Ihren Dateien zu verbessern Anwendung. Wir werden über das Routing sprechen, da es in jedem Fall von entscheidender Bedeutung ist moderne Anwendung. Es wird Ihnen helfen, einen Schritt nach vorne zu machen professionelle PHP-Entwicklung.
Ein Routing-System bildet einfach ein HTTP ab Anfrage an einen Anfragehandler (Funktion oder Methode). Mit anderen Worten, es definiert, wie wir ohne das navigieren oder auf verschiedene Teile einer App zugreifen Sie müssen den Dateinamen eingeben. Sie können dies durch Erstellen oder Festlegen tun Routen (oder Pfade). Beispielsweise ermöglicht uns der Routenserver/Kontakt den Zugriff auf die Datei contact.php.
Lassen Sie mich zunächst einmal daran erinnern, was ein Routing ist. Routenführung ermöglicht es uns, unsere App besser zu strukturieren und Unordnung zu beseitigen URLs. Dies sind zwei Hauptfunktionen, die jedes gute Routing-System bietet:
Um ein Routing-System zu erstellen, benötigen wir einen Router, der nicht mehr ist als der Eintragsdatei zu unserer App. Standardmäßig heißt diese Eintragsdatei index.php. Innerhalb der Datei definieren wir das Routing-System dank [switch](https://www.php.net/manual/en/control-structures.switch.php) oder [match](https://www.php. net/manual/en/control-structures.match.php) Anweisungen.
Zu guter Letzt müssen wir alle Anfragen an den Router umleiten. Dies erfolgt in der Konfigurationsdatei des PHP-Servers.
Bevor wir fortfahren, sehen wir uns an, wie das Projekt aussehen wird:
Dateistruktur
Verwenden Sie die folgenden Shell-Befehle, um das zu starten Projekt:
mkdir php-routing & cd php-routingtouch index.php .htaccess
Wir haben bereits erwähnt, dass die Umleitung auf dem PHP-Server erfolgt config-Datei. Sie müssen also einige Anpassungen vornehmen, je nachdem, ob Sie möchten Verwenden Sie einen Apache- oder NGINX-Server.
Hier können wir ganz einfach die .htaccess-Datei verwenden, die wir bereits im Stammverzeichnis des Projekts erstellt haben. Fügen Sie die folgenden Anweisungen hinzu:
mkdir php-routing & cd php-routingtouch index.php .htaccess
Hinweis: Wenn die Website oder App vorhanden ist Beachten Sie im Stammverzeichnis des Servers (oder wenn wir keinen virtuellen Host haben), wie die .htaccess-Datei aussehen sollte:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php
Ersetzen Sie im obigen Code /folder/ durch den Namen des Ordners, der Ihre Site enthält.
Die Standardkonfigurationsdatei heißt nginx.conf. Diese Datei befindet sich in etc/nginx, usr/local/nginx/conf oder /usr/local/etc/nginx.
Um zu index.php umzuleiten, verwenden Sie den folgenden Befehl:
RewriteEngine On RewriteBase /folder/ RewriteRule ^index\.php$ - [L]RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /folder/index.php [L]
Der Standort/Block gibt an, dass dies für alle Standorte gilt, es sei denn, der Standort wird ausdrücklich angegeben /
Die try_files-Direktive teilt dem Server mit, dass bei jeder Anfrage an den URI, der mit dem Block am Speicherort übereinstimmt, zuerst $uri (oder $uri/) ausprobiert werden muss Datei vorhanden ist, stellen Sie die Datei bereit. Andernfalls wird die Fallback-Option (index.php) verwendet. Und dieses letzte Verhalten ist das, was wir wollen.
Laden Sie den Server nach der Änderung neu.
Wir wissen jetzt, wie Routing funktioniert, und das wissen wir auch sogar alle Anfragen verschicken zum Router. Jetzt ist es an der Zeit, den Code für den Router in index.php zu schreiben.
Erstellen Sie zunächst eine Variable für die HTTP-Anforderungszeichenfolge:
location / { try_files $uri $uri/ /index.php}
Diese Variable hilft uns beim Vergleich mit vielen Routen (Pfaden) und rufen Sie die entsprechende Ansichtsschnittstelle auf.
$request = $_SERVER['REQUEST_URI'];
Was passiert hier? Die switch-Anweisung ähnelt einer Reihe von if-Anweisungen für denselben Ausdruck (Variable). Es führt nur dann einen Code aus, wenn eine Case-Anweisung gefunden wird, deren Ausdruck einen Wert ergibt, der mit dem Wert des Switch-Ausdrucks übereinstimmt. Lassen Sie mich das veranschaulichen, damit Sie es gut verstehen können.
Nehmen wir an, dass unsere Variable den Wert /views/users/ enthält. Wenn der obige Codeteil ausgeführt wird, prüft PHP, ob der Wert /views/users dem Wert der case-Anweisung entspricht, der in unserem Fall /views/users ist. Wenn diese Bedingung also als wahr ausgewertet wird, ruft PHP die Datei /views/users.php auf. Wenn die Bedingung „falsch“ ergibt, sucht PHP bis zum Ende des Switch-Blocks nach der nächsten Case-Anweisung.
Hinweis: Jedes Mal, wenn die Case-Anweisung „True“ ergibt, führt PHP den Code im folgenden Fall weiter aus Aussagen ohne die Notwendigkeit, diese Fallaussagen auszuwerten. In unserem Fall benötigt PHP auch view/dep.php. Um dieses „schlechte Verhalten“ zu vermeiden, müssen Sie nach jeder case-Anweisung eine break-Anweisung hinzufügen.
Lassen Sie uns nun alles in unserer index.php-Datei zusammenfassen:
mkdir php-routing & cd php-routingtouch index.php .htaccess
Wie Sie bereits wissen, speichern wir zunächst eine Benutzeranfrage in der Variablen $request und verwenden sie dann in der switch-Anweisung. Aus Gründen des sauberen Codes habe ich eine Variable erstellt, die den Namen des Ansichtsverzeichnisses enthält.
Sie werden außerdem zwei weitere Dinge bemerken:
Fügen wir nun einige Dummy-Daten zu unseren Ansichten hinzu.
Wir haben bereits alle Dateien im Ansichtenverzeichnis erstellt. Gehen wir einfach in dieses Verzeichnis und fügen Sie in jede Datei etwas Inhalt ein.
Fügen Sie einfach in jede Datei etwas Inhalt ein:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php
RewriteEngine On RewriteBase /folder/ RewriteRule ^index\.php$ - [L]RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /folder/index.php [L]
location / { try_files $uri $uri/ /index.php}
$request = $_SERVER['REQUEST_URI'];
Wie Sie sehen können , jede Datei enthält nur einen Titel und einen Absatz. Fühlen Sie sich frei, beliebige Inhalte hinzuzufügen und den Router zu testen.
In diesem Tutorial haben Sie gelernt, wie Sie ein grundlegendes Routingsystem von Grund auf erstellen, einschließlich:
Das obige ist der detaillierte Inhalt vonSo erstellen Sie ein Routing-System für eine PHP-App von Grund auf. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!