diff --git a/app/kernel/Router.php b/app/kernel/Router.php new file mode 100644 index 0000000000000000000000000000000000000000..a2b339b029cdca9c8da9916b6032d7569c199589 --- /dev/null +++ b/app/kernel/Router.php @@ -0,0 +1,35 @@ +<?php + +class Router { // classe PHP permettant l'analyse de l'URL des requêtes + public static function analyze($query) { // méthode d'analyse de la requête + // on définit une variable, par défaut initialisée sur les paramètres de page d'erreur 404 (page non trouvée) + $result = array( + "controller" => "Error", // le nom du contrôleur à instancier + "action" => "error404", // le nom de l'action à effectuer, autrement dit de la méthode à appeler dans ce contrôleur + "params" => array() // les paramètres de la requête (dans un tableau), par défaut aucun + ); + + if($query === "" || $query === "/") { // on regarde si la requête est identique (===) à la chaîne vide ou "/", et si oui, c'est qu'on voulait accéder à la page d'accueil + $result["controller"] = "Index"; // le contrôleur est donc Index + $result["action"] = "display"; // on va afficher la page, l'action est donc display + // il n'y a pas de paramètres, donc pas d'affectation de "params" + } + else { // sinon, on a des infos sur la page demandée + $parts = explode("/", $query); // on sépare la requête selon les /, et on regarde ce qu'on connait comme ordres dedans + if($parts[0] == "jeu" && count($parts) == 2) { // on veut consulter la fiche d'un jeu (je sais pas si y'a ça de prévu, mais ça servira d'exemple) + $result["controller"] = "Jeu"; // le contrôleur à instancier sera "JeuController", on met donc "Jeu" dans la variable de résultat + $result["action"] = "display"; // on veut afficher les informations d'un jeu, donc on donne l'action "display" + $result["params"]["slug"] = $parts[1]; //on a des paramètres dans l'URL (normalement le nom/id du jeu), on le stocke aussi + } + else if($parts[0] == "profil" && count($parts) == 2) { // autre possibilité : on veut consulter un profil (le premier bout de la requête est "profil", et on a au moins un paramètre derrière) + $result["controller"] = "Profil"; // le contrôleur à instancier sera "ProfilController", on met donc "Profil" dans la variable de résultat + $result["action"] = "display"; // on veut afficher le profil de quelqu'un, donc on donne l'action "display" + $result["params"]["slug"] = $parts[1]; //on a des paramètres dans l'URL (normalement le pseudo de la personne), on le stocke aussi + } + // à chaque fois qu'on crée une nouvelle page, il faut rajouter un cas à cet endroit ! + + // si on n'a rien trouvé que l'on connaissait, alors la page demandée n'existe pas => erreur 404. Ça tombe bien, c'est comme ça qu'on a initialisé la variable ! :-D + } + return $result; // on renvoie le tableau avec les informations nécessaires pour savoir quoi faire + } +}