From 187fa9603e72173e92ec18cacb0974e88a8635bf Mon Sep 17 00:00:00 2001
From: vbochet <vbochet@gmail.com>
Date: Thu, 31 Mar 2016 18:13:34 +0200
Subject: [PATCH] =?UTF-8?q?Cr=C3=A9ation=20d'un=20fichier=20Router.php=20d?=
 =?UTF-8?q?ans=20le=20r=C3=A9pertoire=20app/kernel/,=20qui=20servira=20?=
 =?UTF-8?q?=C3=A0=20analyser=20les=20requ=C3=AAtes=20et=20d=C3=A9terminer?=
 =?UTF-8?q?=20quoi=20faire=20(pour=20MVC)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 app/kernel/Router.php | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)
 create mode 100644 app/kernel/Router.php

diff --git a/app/kernel/Router.php b/app/kernel/Router.php
new file mode 100644
index 0000000..a2b339b
--- /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
+	}
+}
-- 
GitLab