Bonjour,

J'ai suivis la formation "La POO en PHP" dans la quel il y a un chapitre ou on parle des controleurs (du patern MVC ) .
Actuellement je suis le tuto "Mise en pratique de la POO en PHP" ou la on parle de routeurs (qui peut aussi etre utilisé pour faire du VMC ).

Il me semble que ces deux "entités" (controleur et routeurs) se ressemble fortement . On recupere l'url et on execute une fonction d'apres cette derniere .
Alors me trompe-je ? Les deux choses on la meme fonction ?
Quand utiliser l'une ou l'autre ou les deux ?

5 réponses


Digivia
Réponse acceptée

Bonjour,

Le routeur doit permettre la transformation d'une url en route interne, et ainsi permettre d'identifier le controller à utiliser ensuite.
Généralement, on crée un front controller (qui n'est pas un controller, mais plutôt un kernel qui va gérer la requête HTTP et se charger d'envoyer la réponse HTTP en gérant tout le processus), qui va se charger d'appeler le Router et ensuite, charger le bon Controller...
Voir le schéma : https://symfony.com/doc/master/_images/components/http_kernel/http-workflow.svg
Sur ce schéma, le router n'est pas nommé, il s'agit en fait de l'étape Resolve Controller.

Mikaelhdx
Réponse acceptée

Hello Ulysse,

Il y a en effet une histoire de récupération d'url et d'exécution de fonction comme tu le dis mais ce n'est pas tout à fait ça.

Le controller te permet de faire la jonction entre les models et les vues. C'est lui qui intéragit avec les données pour les envoyer à la vue.

Imagine maintenant une sorte d'écouteur qui scan l'url appellée par l'utilisateur. Le routeur. Il analyse l'url demandée et appelle le controller associé.

Exemple d'une route (cf doc du micro framework SLIM):

$app->get('/', '\HomeController:home');

Lorsque tu appelles l'index (/), le router appellera la fonction home de HomeController.

Mika.

Digivia
Réponse acceptée

Salut ulysse,
Voici la page, c'est en fait la documentation du Kernel de Symfony. Tu y trouveras pas mal d'infos intéressantes.
https://symfony.com/doc/master/components/http_kernel.html

Merci, a vous deuxpour vos reponses qui m'ont donnée des pistes pour répondre a mes intérogation .
Par contre, Digivia, est ce que tu peut me donner le lien de la page qui contient les explication du schema que tu as mis dans tes explications, stp, (enfin si elle existe ) ?

merci Digivia