Dans le cours : PHP : L'architecture MVC
Créer une première route - Tutoriel PHP
Dans le cours : PHP : L'architecture MVC
Créer une première route
Dans cette vidéo, nous allons voir ensemble comment faire pour créer notre première route. Pour créer notre première route, nous allons exploiter les paramètres qui sont là. Avant tout, je vais mettre en place un contrôleur de test pour vous montrer comment ça fonctionne. Donc je vais aller dans controllers, et je vais me créer ici un nouveau fichier que je vais appeler TestController, qui sera mon contrôleur, .php. TestController ici va avoir justement une action qui sera l'action getTest. Donc j'ouvre le php, et je mets en place ma méthode getTest ici qui va tout simplement me retourner un message echo « je suis sur le controller de test ». Donc ici, je vais mettre en place une route qui me permettra d'accéder à cette méthode getTest. C'est parti ! Donc je me rends au niveau de mon routeur, et je vais exploiter ces paramètres-là pour y arriver. La première chose que je vais faire ici, ça va être tout simplement de m'assurer que l'utilisateur a bien tapé un contrôleur. Donc pour ça, je vais vérifier que params 0 ici n'est pas vide, donc if différent de empty $params 0, c'est qu'il y a un contrôleur qui a été tapé. Ça, c'est la première règle. Donc là ensuite, je peux récupérer le contrôleur, $controller va être égal à $params 0. Et là j'ai mon contrôleur. Ensuite, je vais devoir récupérer la méthode du contrôleur qui est appelé, et pour ça, je vais utiliser $params 1. Donc je fais la même chose, if différent de empty $params 1. À ce moment-là, je vais récupérer la méthode dans une variable action. Je vais faire $action qui sera égal à $params 1. Maintenant, il faut que je m'assure ici que la méthode qui a été appelée, elle existe bien. Donc je vais utiliser une méthode de PHP If function_exists, et je vais passer ici donc l'action. Donc si la méthode existe, on va s'assurer qu'elle existe bien dans le contrôleur aussi. Donc je vais faire un if $action égal à la méthode de mon contrôleur, donc TestController est égal à getTest. À ce moment-là, on va charger getTest, donc If $action = getTest, ici. On va dans ce cas-là appeler la méthode getTest, ici. Alors c'est getText, getTest, Je vais la copier et je vais l'ajouter. Et ça devrait fonctionner. Alors attention, ici, comme on appelle la méthode getTest, il faut aussi inclure ici le contrôleur, require once, et je vais chercher ici mon contrôleur, donc contrôleur qui se trouve dans le dossier controllers/test. Donc c'est TestController. Il manque des choses dans notre condition. Là, il va falloir aussi penser à inclure le contrôleur qui va être appelé, parce que c'est vrai que là j'ai récupéré l'action, mais je n'ai pas récupéré le contrôleur. Pour récupérer le contrôleur, je vais faire un require comme j'ai le nom du contrôleur, require, et je vais aller chercher mon contrôleur. Donc pour ça, je vais faire require ici, pas require once. Et là je vais faire un require_once. Alors on va chercher le contrôleur, donc controller. Dans le dossier des contrôleurs, on va récupérer le contrôleur, controllers $controller.php, et comme ça, dynamiquement, je vais chercher mon contrôleur. Donc là je vais charger l'index, et on va voir si ça marche. Alors ici j'ai corrigé quelques points, donc j'avais une erreur au niveau de TestController. Je n'avais pas mis de fonction donc j'ai ajouté le « function ». Donc là, vous voyez ici, function getTest. Et voilà. Donc ça me semble correct. Maintenant je vais aller sur le navigateur, et on a une erreur ici. Il n'arrive pas à trouver ici controller.php, parce que l'URL d'accès, elle n'est pas bonne, donc je vais essayer de la changer. Il va falloir mettre en place une petite modification. Je vais me rendre sur le code, sur l'index.php, et on va ajouter une constante qui va permettre de pouvoir définir le chemin. Donc le chemin pour accéder au contrôleur, celui-là n'est pas bon, donc il va falloir le changer. Pour le modifier, on va créer dynamiquement une variable de chemin qui permettra d'accéder directement au contrôleur, ici, ça sera plus facile. Donc ici, je vais mettre en place dans la condition une nouvelle variable qui sera une constante, donc define qui va s'appeler PATH, qui va définir le chemin pour accéder au contrôleur. Donc je vais faire un str replace, str_replace. str_replace, on va retirer le index.php, c'est ce qui pose problème, et à la place on va mettre un vide. Je vais récupérer comme ça la variable $server script filename. Une fois qu'on a défini ici le PATH, on peut l'utiliser au niveau du chemin de notre contrôleur ici. Juste avant le contrôleur, je vais mettre le PATH concaténé avec controller, et ça devrait fonctionner je pense. Donc ici, une fois que j'ai corrigé les erreurs, je me rends sur le navigateur, et voilà ce que j'ai, j'ai cette erreur-là. Donc c'est normal, c'est parce que les paramètres que je passe ici n'existent pas. Donc là, par exemple, si je passe le nom du contrôleur action=, le contrôleur, c'est testController et la méthode, c'est getTest. Là, je valide. Et voilà qu'il me redirige bien vers le contenu de getTest, « je suis sur le controller de test ». Donc là, ça marche bien. Via le système de routing, on a bien accès ici à notre contrôleur.