Tout d'abord, nous allons créer les fichiers index.php, router.php et .htaccess.
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php [L,QSA]
Ce code affichera une réponse 404 si l'utilisateur saisit l'URL pour accéder directement à router.php.
Ajouter une classe Page dans router.php
class Page { protected static bool $Return_404 = true; }Créez une variable booléenne statique pour renvoyer la page 404. Nous le définirons sur true par défaut.
Nous ajoutons maintenant une fonction pour la page 404.protected static function Return_404(): void { (file_exists("./Pages/404.php")) ? require_once "./Pages/404.php" : http_response_code(404); }Ici, j'ai mis une page 404 dans le dossier Pages. Vous pouvez le mettre dans n'importe quel dossier de votre choix.
Nous ajouterons également la fonction "Fichier".
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; }Cette fonction vérifiera si l'URL de la requête contient une chaîne de requête ou se termine par "/" et la supprimera.
J'utilise la fonction de chaîne "strok" pour obtenir les valeurs de chaîne avant "?". Je sais que "strok" n'est pas destiné à être utilisé comme ça, mais cela fonctionne et m'évite de faire inutilement des algorithmes complexes. J'utilise la fonction de chaîne "rtrim" pour supprimer le "/" s'il est contenu à la fin de la chaîne.Ajouter la classe Routes dans router.php
class Routes { public static array $Route = array( "" => "Pages/home.php", "/about" => "Pages/about.php", ); }Ici, je crée un tableau statique pour stocker les routages.
Ce tableau contient "URL demandée" => "Emplacement du fichier".
J'ai mis tous les fichiers de page dans le dossier Pages. Vous pouvez les placer où vous voulez.Ajouter une classe de routeur dans router.php
La classe Router s'étendra à partir de la classe Page que nous avons déjà créée ci-dessus.
Notez que "" => "Pages/home.php", est destiné à la page d'accueil.class Router extends Page { }Maintenant, nous allons écrire la fonction qui vérifie si le fichier demandé existe dans la classe Router.
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(); }Cette fonction vérifie d'abord que le fichier demandé se trouve dans le tableau $Route. S'il existe, le booléen statique $Return_404 est défini sur false afin que la page 404 ne s'affiche pas et n'obtienne pas le fichier d'échange. S'il n'existe pas, cela renverra la page 404.
S'il existe mais qu'il n'y a aucun fichier dans le dossier Pages, la fonction fera écho à "Erreur". Vous pouvez afficher la page 404 au lieu de faire écho à "Erreur" ici.Le fichier router.php final ressemblera à ceci.
$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
Dans le fichier index.php, nous utiliserons la fonction "Run" de la classe Router.
Router Tout le code HTML des pages sera dans la balise "body".
Créer des pages
Enfin, créez home.php, about.php et 404.php dans le dossier Pages.
home.php
Home page
à propos.php
about page
404.php
404 page
Vérifiez si le code fonctionne ou non avec l'extension "xampp" ou "PHP server".
Si vous rencontrez une erreur, n'hésitez pas à me le dire. XD
Vous pouvez également consulter le référentiel github à l'adresse :
Tokigin / routeur de pages
Routeur manuel à partir du référentiel php-router
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3