Easy-Micro

LANGAGE MVC PHP
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.

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

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');
}
Toujours pas de ?>

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();
}



Flux RSS Easy-Micro - Abonnez-vous Easy-Micro [ François Bisch ]