Bonnes Pratiques MVC

Bien que l'architecture Modèle-Vue-Contrôleur (MVC) soit connu par la quasi totalité des dévelopeur web, de nombreuses personnes s'interrogent encore sur la meilleure facon de l'appliquer lors du développement d'une application. Les idées centrales derrière MVC sont la réutilisation et le séparation logique du code. Nous allons voir dans cette section les règles générales à suivre afin de respecter au mieux l'architecture MVC lors de développement d'une application Yii.

Afin de mieux expliquer ces règles, on partira sur le principe qu'une application web est constituée de différentes sous applications tels que:

Les sous-applications pourront être implémentées en tant que modules, ou comme une application Yii partageant une partie du code avec d'autre sous-applications.

Modèle

Un Modèle représente la structure à la base de l'application Web. Les modèles sont souvent partagés entre les différentes sous-applications de l'application Web. Par exemple, un modèle LoginForm pourra aussi bien être utilisé par le front end que le back end d'une application; un modèle News pourra être utilisé au travers de la ligne de commande, d'APIs, et le front/back end d'une application. Ainsi les modèles:

Parfois, suivre cette dernière règle abouti à un modèle très lourd, contenant trop de code pour une unique classe. Cela peut aussi rendre le modèle difficile à maintenir si le code est utilisé dans différents buts. Par example, un modèle News peut contenir une méthode appelée getLatestNews qui sera utilisée seulement par le front end; il pourrait aussi contenir une méthode appelée getDeletedNews qui ne serait utilisée que par le back end. Cela ne pose pas de problème pour une petite ou moyenne application. Pour les applications plus importantes, la technique suivante pourra être utilisée pour rendre les modèles plus maintenables:

Ainsi, si l'on veut utiliser cette technique, on ajoute un modèle News dans l'application front end contenant seulement la méthode getLatestNews, et on ajoute un autre modèle News dans l'application back end, qui lui ne contiendrait que la méthode getDeletedNews.

En général, les modèles ne doivent pas contenir la logique gérant l'interaction avec les utilisateurs. De manière plus spécifiques, les modèles:

Vue

Les vues sont en charge de la représentation des modèles dans le format souhaité par l'utilisateur. En général, les vues:

Les vues peuvent être réutilisées de différent moyens:

Contrôleur

Un contrôleur est la pièce maitresse reliant les modèles, vues et autres composants afin de former une application complète. Les contrôleurs sont en charge de la gestion directe des requêtes utilisateurs. Ainsi, les contrôleurs:

Dans une application MVC bien conçue, les contrôleurs sont souvent très léger, contenant seulement quelques douzaines de lignes de code; alors que les modèles sont plus importants en taille, contenant la plupart du code responsable pour afficher et manipuler les données. En effet cela est du au fait que les structures de données et la logique applicative représentés par les modèles sont en général très spécifiques à une application particulière, et ont besoin d'être grandement adaptés pour répondre aux besoins de l'application; alors que la logique du contrôleur suit souvent des patterns similaires entre applications et peut ainsi être simplifiée par le framework sous-jacent ou les classes de base.

$Id: basics.best-practices.txt 2795 $