„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Erstellen eines einfachen Seitenrouters in PHP

Erstellen eines einfachen Seitenrouters in PHP

Veröffentlicht am 07.11.2024
Durchsuche:851

Erstellen Sie Dateien

Zuerst erstellen wir die Dateien index.php, router.php und .htaccess.

Leiten Sie alle Anfragen an index.php in .htaccess um

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,QSA]

Direkten Zugriff für router.php verhindern

Dieser Code zeigt eine 404-Antwort an, wenn der Benutzer die URL für den direkten Zugriff auf router.php eingibt.

Fügen Sie die Page-Klasse in router.php hinzu

class Page
{
  protected static bool $Return_404 = true;
}

Erstellen Sie eine statische boolesche Variable für die Rückgabe der 404-Seite. Wir werden es standardmäßig auf „true“ setzen.
Jetzt fügen wir eine Funktion für die 404-Seite hinzu.

protected static function Return_404(): void
    {
       (file_exists("./Pages/404.php")) ?  require_once "./Pages/404.php" : http_response_code(404);
    }

Hier habe ich eine 404-Seite in den Ordner „Pages“ eingefügt. Sie können es in einem beliebigen Ordner ablegen.

Wir werden auch die Funktion „Datei“ hinzufügen.

protected static function File(string $file): string
{
    if (!empty($file)) {
        (str_contains($file, "?")) ? $file = strtok($file, '?') : $file;
        ($file[strlen($file) - 1] === "/") ? $file = rtrim($file, "/") : $file;
    }
    return $file;
}

Diese Funktion prüft, ob die Anfrage-URL eine Abfragezeichenfolge enthält oder mit „/“ endet, und entfernt sie.
Ich verwende die String-Funktion „Strok“, um die String-Werte vor „?“ abzurufen. Ich weiß, dass „Strok“ nicht für diese Verwendung gedacht ist, aber es funktioniert und erspart mir unnötig komplexe Algorithmen. Ich verwende die Zeichenfolgenfunktion „rtrim“, um das „/“ zu entfernen, wenn es am Ende der Zeichenfolge enthalten ist.

Fügen Sie die Routes-Klasse in router.php hinzu

class Routes
{
    public static array $Route = array(
        "" => "Pages/home.php",
        "/about" => "Pages/about.php",
    );
}

Hier erstelle ich ein statisches Array zum Speichern von Routings.
Dieses Array enthält „Angeforderte URL“ => „Dateispeicherort“.
Ich habe alle Seitendateien im Ordner „Pages“ abgelegt. Sie können sie überall platzieren, wo Sie möchten.

Fügen Sie die Router-Klasse in router.php hinzu

Die Router-Klasse erweitert die Page-Klasse, die wir oben bereits erstellt haben.
Beachten Sie, dass „“ => „Pages/home.php“ für die Startseite gilt.

class Router extends Page
{

}

Jetzt schreiben wir die Funktion, die prüft, ob die angeforderte Datei in der Router-Klasse vorhanden ist.

   public static function Run(): void
    {
        $requested_file = self::File($_SERVER["REQUEST_URI"]);
        foreach (Routes::$Route as $request => $file) {
            if ($requested_file === $request) {
                if (file_exists($file)) {
                    self::$Return_404 = false;
                    require $file;
                } else echo "Error";
            }
        }
        if (self::$Return_404) self::Return_404();
    }

Diese Funktion prüft zunächst, ob sich die angeforderte Datei im $Route-Array befindet. Wenn es vorhanden ist, wird der statische boolesche Wert $Return_404 auf „false“ gesetzt, sodass die 404-Seite nicht angezeigt wird und die Auslagerungsdatei nicht abgerufen wird. Wenn nicht vorhanden, wird die 404-Seite zurückgegeben.
Wenn es existiert, aber keine Datei im Pages-Ordner vorhanden ist, gibt die Funktion „Fehler“ zurück. Sie können hier die 404-Seite anstelle von echo „Error“ anzeigen.

Die endgültige Datei router.php sieht folgendermaßen aus.

 $file) {
            if ($requested_file === $request) {
                if (file_exists($file)) {
                    self::$Return_404 = false;
                    require $file;
                } else echo "Error";
            }
        }
        if (self::$Return_404) self::Return_404();
    }
}
class Routes
{
    public static array $Route = array(
        "" => "Pages/home.php",
        "/about" => "Pages/about.php",
    );
}

Index.php

In der index.php verwenden wir die Funktion „Run“ aus der Router-Klasse.


Router

Der gesamte HTML-Code der Seiten befindet sich im „body“-Tag.

Erstellen Sie Seiten

Erstellen Sie schließlich home.php, about.php und 404.php im Ordner „Pages“.

home.php

Home page

about.php

about page

404.php

404 page

Überprüfen Sie, ob der Code mit der Erweiterung „xampp“ oder „PHP-Server“ funktioniert oder nicht.

Wenn Ihnen ein Fehler auffällt, teilen Sie mir dies bitte mit. XD

Sie können das Github-Repository auch überprüfen unter:

Creating a simple page router in PHP Tokigin / Page-Router

Manueller Router aus dem PHP-Router-Repository

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/kohtet_gintoki/creating-a-simple-page-router-in-php-2hpf?1 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3