MVC, ou comment développer avec classe
28 septembre 2008Nombreux sont les développeurs qui pour développer une application (web ou desktop) s’attaquent directement au code source comme des aveugles et sans aucune organisation (ne nier pas ce qui est vrai lol), et ceci afin d’avoir des résultats le plus vite possible. Le problème c’est que même si pour les tout petits (et j’ai bien dit, les tout petits) projets, cette méthode s’avère pratique, elle est complètement inconcevable dés que votre projet gagne en complexité.
Par soucis de performance, des méthodes de conception et développement ont été mises en place. Elles offrent plusieurs avantages dont le découpage du projet (ce qui facilite le travail en équipes), faciliter la maintenabilité du projet, en le structurant d’une manière cohérente…
MVC – Model View Controller -
C’est une méthode et également une architecture pour vos applications développée 1979 en par Trygve Reenskaug, mais c’est seulement avec l’arrivée des interfaces graphiques qu’elle a pris son envol. Elle se base sur le découpage de votre application (en réalité, une partie seulement de votre application, la plus proche de l’IHM) en trois couches principales, le Modèle , la présentation et le contrôleur :
- Le modèle (Model) : ou modèle de données, c’est la partie qui s’occupe de l’interaction avec les données du systèmes (bases de données, fichiers, flux RSS …)
- La présentation : c’est la partie que voit l’utilisateur pour l’affichage des résultats en sortie et son second rôle est de recevoir les entrées des utilisateurs.
- Le controlleur : c’est « le gestionnaire d’événements », il reçoit les différents événements et se charge de synchroniser les deux autres couches.
Exemple de mise en oeuvre
Assez parlé, ceux qui veulent en savoir plus, peuvent consulter Wikipédia ou autre. La meilleure façon d’apprendre et de comprendre c’est la pratique. Pour ça je vais essayer de vous expliquer le mécanisme de fonctionnement de Symfony qui est basé complètement sur une architecture MVC pour développer des applications web.
- Le modèle : Cette couche de Symfony est basé sur Propel (ou bien Doctrine), et c’est la couche d’abstraction de données c’est à dire que l’accès au données se fera dans cette couche. Dans le cas habituel d’une base donnée, Propel se charge d’une grande partie de cette couche et vous fournit des classes d’accès à vos tables de données (les différent SELECT …) et des classe de représentation de vos données (pour faciliter la manipulation des données issus de vos tables). Vous pourrez bien sur étendre ce modèle à votre guise.
- La vue : Représentée dans Symfony par les différentes interfaces. Concrètement c’est le code XHTML de vos pages web, dénudés de tout traitement PHP si ce n’est des « echo » pour afficher les données reçues du controlleur, par exemple (une fiche utilisateur) :
<h1><?php echo $user->getUsername(); ?></h1>
<?php if ($user->hasAvatar()) : ?>
<?php echo image_tag($user->getAvatar()) ; ?>
<?php endif; ?><p>
Nom : <?php echo $user->getNom(); ?> <br />
Prenom : <?php echo $user->getPrenom(); ?>
</p>
- Le controlleur : représenté par des actions, Il gérent les évenements sur votre application web, par exemple l’appel d’URL ou, une action AJAX ou autre. Un exemple de recherche de l’utlisateur avec l’id n° 10 pour l’afficher grâce à la vue précédente serait :
public function executeUserId()
{
$this->user = UserPeer::retrieveByPk(10);
}

Voilà j’éspère qu’avec ça, vous êtes maintenant convaincu de l’utilité d’une méthode comme MVC et de la facilité et de l’élégance de développement qu’elle peut apporter.
Chargement ...


Stan
le 28 septembre 2008 à 17:35Excellent article !
Je m’y suis mis y a pas longtemps grâce à symfony, et ça facilite grandement les choses.
bassim
le 29 septembre 2008 à 18:30C’est un Design Pattern aussi !
mais elle est très lourde à mettre en place, je lui préfère un modèle M (VC) où la vue et le contrôleur sont réunis.
Sinon dans J2EE, y a MVC2 qui est utilisé (un seul contrôleur).
youknowriad
le 29 septembre 2008 à 18:39@bassim Personnellement, j’aime bien les applications très structurés, ce qui facilite la maintenabilité et l’extensibilité. Et c’est pour cette raison que je préfère nettement que la vue et le contrôleur soit séparés.
Et en plus dans le cas de développement web (mon domaine de prédilection), il est nettement plus intéressant d’avoir ces deux couches séparés. Imagine un traitement et appel d’une fonction du modèle en PHP au milieu du code HTML, ça le fait pas dutout.
amina
le 1 octobre 2008 à 22:53slm j’ai lu un peu l’article en haut c un peu compliqué ( hadra ta3 les geek koi) je suis étudiante en Mias et j’aimerai en apprendre un peu alors s’il vous plait expliqué un peu plus merci
youknowriad
le 1 octobre 2008 à 23:00@amina je ne sais pas si tu as étudié génie logiciel ou pas encore mais en tout cas MVC est un peu une approche génie logiciel et aussi IHM (Interface Homme machine). C’est une façon de programmer, et d’organiser son application quelque soit le langage. Pour en apprendre plus, il faudra la pratiquer.
Peut être que Wikipédia pourra t’éclairer un peu mieux :
http://fr.wikipedia.org/wiki/Mod%C3%A8le-Vue-Contr%C3%B4leur
Propel, la puissante couche d’abstraction de Symfony | Youknowriad, blog du caméléon de l'informatique
le 3 octobre 2008 à 23:27[...] je l’avait mentionné dans l’article sur l’architecture MVC, Symfony s’appuie grandement sur la couche d’abstraction de données [...]
Tutoriels usto » Archive du blog » Propel, la puissante couche d’abstraction de Symfony
le 6 octobre 2008 à 23:39[...] je l’avait mentionné dans l’article sur l’architecture MVC, Symfony s’appuie grandement sur la couche d’abstraction de données [...]
Mechi
le 15 mai 2009 à 13:06:bien: :pirate: :musique:
merci pour ces information