Bonnes Pratiques MVC

Bien que l'architecture Modèle-Vue-Contrôleur (MVC) soit connue de la quasi totalité des développeurs web, de nombreuses personnes s'interrogent encore sur la meilleure façon 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 du 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 telles 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'autres 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 exemple, 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écifique, 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érents moyens:

Contrôleur

Un contrôleur est la pièce maîtresse 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égers, contenant seulement quelques douzaines de lignes de code; alors que les modèles sont plus importants en taille, contenant la plupart du code responsable de l'affichage et de la manipulation des données. En effet cela est dû au fait que les structures de données et la logique applicative représentées par les modèles sont en général très spécifiques à une application particulière, et ont besoin d'être grandement adaptées pour répondre aux besoins de l'application; alors que la logique du contrôleur suit souvent des modèles de conception similaires entre applications et peut ainsi être simplifiée par le framework sous-jacent ou les classes de base.

$Id: basics.best-practices.txt 2797 2013-11-20 $