• 15 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

Vous pouvez obtenir un certificat de réussite à l'issue de ce cours.

J'ai tout compris !

Mis à jour le 31/01/2019

Créer un routeur

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

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...

Et alors, c'est mal ?

Eh bien disons que ça fonctionnerait. Mais ce n'est pas parce que ça fonctionnerait que ce serait forcément l'idéal.

Comment feriez-vous par exemple s'il y avait des informations communes à charger sur toutes les pages ? Par exemple les identifiants de connexion à la base de données ?... Vous les répéteriez ?...

Non à la répétition, oui à la factorisation ! ✊

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).

Le routeur appelle le bon contrôleur, qui appelle le modèle puis la vue
Le routeur appelle le bon contrôleur, qui appelle le modèle puis la vue

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

Commençons par notre controller.php . On va y regrouper nos contrôleurs dans des fonctions :

<?php

require('model.php');

function listPosts()
{
    $posts = getPosts();

    require('listPostsView.php');
}

function post()
{
    $post = getPost($_GET['id']);
    $comments = getComments($_GET['id']);

    require('postView.php');
}

C'est très simple. On a juste placé nos contrôleurs dans des fonctions. 😉

Création du routeur index.php

Intéressons-nous maintenant notre routeur 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();
}

Il a l'air un peu compliqué parce qu'on y fait pas mal de tests, mais le principe est tout simple : appeler le bon contrôleur. Ca donne :

  1. On charge le fichier controller.php (pour que les fonctions soient en mémoire, quand même !).

  2. On teste le paramètre action pour savoir quel contrôleur appeler. Si le paramètre n'est pas présent, par défaut on charge la liste des derniers billets (ligne 18). C'est comme ça qu'on indique ce que doit afficher la page d'accueil du site.

  3. On teste les différentes valeurs possibles pour notre paramètre action et on redirige vers le bon contrôleur à chaque fois.

Voilà qui commence à prendre forme ! 😁

Essayez !

https://www.codevolve.com/api/v1/publishable_key/2A9CAA3419124E3E8C3F5AFCE5306292?content_id=5e71e3e7-9e9e-4ef3-b658-9f055c65945c

Exemple de certificat de réussite
Exemple de certificat de réussite