Heim >Backend-Entwicklung >PHP-Tutorial >So erstellen Sie ein Routing-System für eine PHP-App von Grund auf

So erstellen Sie ein Routing-System für eine PHP-App von Grund auf

PHP中文网
PHP中文网nach vorne
2024-11-29 16:23:53186Durchsuche

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.

截屏2024-11-29 16.11.16.png

Wie Routing funktioniert

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:

  • Definiert, welche Aktion für jede eingehende Anfrage ausgeführt werden soll.
  • Generiert SEO-freundliche URLs (z. B. /views/users statt view/user.php?all).

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.

Projekt-Setup

Bevor wir fortfahren, sehen wir uns an, wie das Projekt aussehen wird:

So erstellen Sie ein Routing-System für eine PHP-App von Grund aufDateistruktur

Verwenden Sie die folgenden Shell-Befehle, um das zu starten Projekt:

mkdir php-routing & cd php-routingtouch index.php .htaccess
  • .htaccess: Eine Apache-Konfigurationsdatei auf Verzeichnisebene. Sie benötigen es nicht, wenn Sie einen NGINX-Server verwenden.
  • index.php: Dies ist die Router- und Eintragsdatei des Projekts. Alle eingehenden Anfragen werden hierher umgeleitet.
  • Ansichten: Dieser Ordner enthält alle UIs für das Projekt.

So leiten Sie alle HTTP-Anfragen an den Router um

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.

Mit Apache umleiten

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
  • Zeile 1: Wir aktivieren die Runtime-Rewriting-Engine des Apache-Servers.
  • Zeile 2: Wir beschränken den Zugriff auf physische Dateien.
  • Zeile 3: Wir leiten alle anstehenden Anfragen an die index.php weiter.

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.

Mit NGINX umleiten

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.

So erstellen Sie das Routing-System

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:

  • Sowohl '' als auch '/' werden verwendet, um sowohl site.com als auch site.com/ abzugleichen, wenn sich Benutzer im Stammverzeichnis der App oder Website befinden.
  • Es gibt standardmäßig eine Sonderfallanweisung, um alles abzugleichen, was nicht der Fall ist übereinstimmend mit den anderen Fällen, d. h. wenn die Route unbekannt ist.

Fügen wir nun einige Dummy-Daten zu unseren Ansichten hinzu.

Dummy-Daten zu den Ansichtsdateien hinzufügen

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.

Abschließende Gedanken

In diesem Tutorial haben Sie gelernt, wie Sie ein grundlegendes Routingsystem von Grund auf erstellen, einschließlich:

  • So erstellen Sie eine Datei mit dem Namen index.php im Stammverzeichnis des Projekts. Dies ist der Router für Ihre App.
  • So leiten Sie alle eingehenden Anfragen an den Router um. Dies tun Sie in der Konfigurationsdatei Ihres Servers.
  • So erstellen Sie das Routing-System mit einer Switch-Anweisung im Router.

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:freecodecamp.org. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen