Arthur l'apprenti developpeur
Mon ami Arthur est venu me rendre visite il y a quelques jours, il est en train d'apprendre le MVC et rencontre quelques difficultés à passer à la pratique.
Je pense avoir tout compris, mais de là à le développer, je suis perdu.
Bon ne t'inquiète pas Arthur, je connais plutôt bien le sujet, nous allons voir ça ensemble.
Qu'est ce que MVC
Pour commencer on va faire un petit rappel, le MVC est un Design Pattern (modèle de conception), qui signifie Model-View-Controller.
Le concept est de séparer les différentes partie du code d'une application selon si :
- Ce code traite des données ou de l'accès aux données : le Modèle
- Ce code permet la mise en forme des données pour l'affichage au client : la Vue
- Ce code gère la logique associée à une demande : le Contrôleur
On le représente de la façon suivante :
[img]
Pour une demande client, un contrôleur permet de gérer toute la logique associée à cette page, il appellera entre autre un ou plusieurs modèle de données, et enverra les données traitées à une vue pour en retourner l'affichage au client.
Par exemple, si tu souhaites afficher la page d'authentification de ton site web, tu peux créer un contrôleur "authentification.php" qui contiendra toute la logique de vérification de mot de passe, un modèle "utilisateur.php" qui représente les données d'un utilisateur connecté, et une vue "authentification_formulaire.php" qui affiche un formulaire simple.
Dans ce cas, le fait d'appeler la page www.monsite.fr/authentification.php affichera le formulaire (la vue est retourné), et lorsque qu'un utilisateur valide le formulaire, il sera envoyé à la même adresse, qui dans ce cas procédera à l'authenfication (via le modèle) et construira un objet utilisateur, si l'authentification a réussie.
Orienter les requêtes url
Jusque là c'est simple, je comprend très bien et ça me parait facile à réaliser.
Oui mais attention, de nos jours, l'implémentation basique du MVC a beaucoup évolué afin de faciliter la maintenance et l'évolutivité des applications, les contrôleurs ne sont plus associés à une seule et unique page, mais découpés en méthode dans un objet, on parle alors d'actions de contrôleur.
Chaque action, correspond à un affichage, qui peut être d'une page complète (une vue), ou d'une partie d'une page (vue partielle).
Oula, tu va un peu vite avec tes machins partiels
Ne t'inquiète pas, nous aurons l'occasion de reparler rapidement de tout cela. Et d'ailleurs ça ne s'arrête pas simplement à la gestion des actions et des vues,pour mieux gérer ces actions et contrôleurs, on implémente un routeur, son but est de savoir quel contrôleur et quelle action appeler en fonction des informations envoyées par le client.
Dans ce cas l'url sera plutôt du type : www.monsite.fr/{controller}/{action}
Le routeur sera en charge d'analyser l'url afin de savoir quel contrôleur appeler et quelle méthode de ce contrôleur doit être utiliser.
Mise en pratique
Maintenant, je suis peut être aller un peu vite pour tout assimiler, mais je pense que le meilleur moyen de comprendre et d'essayer, comme on dit c'est en forgeant que l'on deviens forgeron. On va donc mettre en pratique avec une architecture MVC, un petit framework le tout en php Orienté Objet, tu est déjà au point sur Php et la POO?
Oui j'ai déjà travaillé en Php orienté objet, je ne suis pas un expert, mais j'ai de bonnes bases.
Attention, ce cours nécessite un minimum de connaissance et de pratique en Php et en Programation Orient Objet, si tu n'es pas encore au point, je t'invite à t'informer sur ces sujets avant de continuer.
J'ai terminé cette partie