"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Création d'un simple routeur de pages en PHP

Création d'un simple routeur de pages en PHP

Publié le 2024-11-07
Parcourir:581

Créer des fichiers

Tout d'abord, nous allons créer les fichiers index.php, router.php et .htaccess.

Rediriger toutes les requêtes vers index.php dans .htaccess

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

Empêcher l'accès direct pour router.php

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 :

Creating a simple page router in PHP Tokigin / routeur de pages

Routeur manuel à partir du référentiel php-router

Déclaration de sortie Cet article est reproduit sur : https://dev.to/kohtet_gintoki/creating-a-simple-page-router-in-php-2hpf?1 En cas de violation, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

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