Créer un routeur
Utilisez une architecture MVC en PHP : Créer un routeur
Créer un routeur
Pour l'instant, 2 fichiers permettent d'accéder aux pages de notre site. Ce sont les 2 contrôleurs :◊ index.php : accueil du site, liste des derniers billets.
◊ post.php : affichage d'un billet et de ses commentaires.
Si on continue comme ça, on va avoir un fichier PHP contrôleur pour accéder à chaque page de notre site : contact.php, editComment.php...
Nouvelle structure des fichiers
Pour faciliter la maintenance, il est plus simple de passer par un contrôleur frontal, qui va jouer le rôle de routeur. Son objectif va être d'appeler le bon contrôleur (on dit qu'il route les requêtes).On va travailler ici sur 2 fichiers :
index.php : ce sera le nom de notre routeur. Le routeur étant le premier fichier qu'on appelle en général sur un site, c'est normal de le faire dans index.php. Il va se charger d'appeler le bon contrôleur.
controller.php : il contiendra nos contrôleurs dans des fonctions. On va y regrouper nos anciens index.php et post.php.
On va faire passer un paramètre action dans l'URL de notre routeur index.php pour savoir quelle page on veut appeler. Par exemple :
◊ index.php?action=listPosts : va afficher la liste des billets.
◊ index.php?action=post : va afficher un billet et ses commentaires.
Création de controller.php
On va y regrouper nos 2 contrôleurs (index.php et post.php) dans des fonctions :controller.php
<?php
require('model.php');
function listPosts() {
$posts = getPosts();
require('listPostsView.php');
}
function post() {
$post = getPost($_GET['id']);
$comments = getComments($_GET['id']);
require('postView.php');
}
Création du routeur index.php
Intéressons-nous maintenant à notre routeur index.php :index.php :
<?php
require('controller.php');
if (isset($_GET['action'])) {
if ($_GET['action'] == 'listPosts') {
listPosts();
}
elseif ($_GET['action'] == 'post') {
if (isset($_GET['id']) && $_GET['id'] > 0) {
post();
}
else {
echo 'Erreur : aucun identifiant de billet envoyé';
}
}
}
else {
listPosts();
}