Zuerst erstellen wir die Dateien index.php, router.php und .htaccess.
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php [L,QSA]
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:
Tokigin / Page-Router
Manueller Router aus dem PHP-Router-Repository
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