Qu'est ce que le MVC ?
MVC est un terme qui veut dire : Modèle-Vue-Contrôleur, ou en anglais : Model-View-Controller. Derrière ce terme barbare se trouve une logique de développement très utilisé maintenant pour créer des sites internet.
Le principe du MVC, est de décomposer en trois morceaux chaque pages d'un site internet :
- Le modèle qui s'occupe des données
- La vue qui s'occupe du visuel
- Le Controller qui fait le lien
Modèle
Le modèle définit une classe, un élément orienté objet donc qui va s'occuper du traitement et de l'analyse des données. Par exemple la lecture et l'écriture de données dans la base de données, correspond à un modèle. Lire/écrire dans un fichier aussi car se sont des données que l'on traite.
Vue
La vue est le visuel de votre page internet, c'est à dire tout ce qui est affiché à l'écran. La vue utilise les données fournie par le modèle mais ne fait pas de traitement sur les données, elle se contente d'afficher à l'écran.
Controller
Le contrôleur, s'occupe de faire le lien entre le modèle est la vue. C'est lui qui reçoit les requêtes adressées à la page internet, qui va alors appeler le bon modèle et lui fournir les informations à partir desquels il va travailler, puis récupérer un résultat qu'il passe ensuite à la vue.
Structure d'un MVC
Le MVC requiert donc une structure des dossiers afin de bien faire la séparation. Chacun appel les dossiers à sa convenance, par convention cependant on retrouve en général les dossiers suivants :
- model
- view
- controller
Chacun ayant donc son rôle bien spécifique : model pour le traitement de données, view pour le visuel et controller qui reçoit la demande (par exemple soumission d'un formulaire) et appel le model et la view concernés.
Pourquoi tan d'utilisation de ce principe ?
Et bien cela permet de bien séparer les choses et de s'y retrouver plus facilement ensuite, que se soit dans la structure ou dans le code. Ce principe permet aussi d'être à plusieurs en même temps sur la même chose.
Dans les framework web actuels type Symfony, on a plus vraiment cette hiérarchie, on a toujours le principe mais encore plus découpés. Ainsi on aura par exemple :
- entity : les entités sont des classes ayant pour but de correspondre à la table de données et dont les données y seront stockés après lecture dans la BDD ou pour enregistrer dans la BDD
- form : les formulaires ont leur propre classe pour générer les formulaires
- repository : les repository sont des classes associées aux entités permettant de créer des requêtes SQL personnalisées
- translations : les traductions sont aussi des classes bien souvent ou de simples fichiers contenant les traductions
Pour les exemples, je m'arrête là car elles sont nombreuses. Tout les éléments présents sont des modèles : ils traitent des données. Le découpage est plus important car chacun à un rôle bien définit, mais cela reste des modèles.
Avec les framework modernes et ce principe de tout séparer, on s'y retrouve facilement et le développement se fait bien plus rapidement avec moins de problèmes, d'où l'intérêt de ce système.
Pourquoi tout le monde ne s'en sert pas ?
Et bien certains ne connaissent pas ou maîtrisent pas ce principe ; il arrive aussi que certains développeurs ne connaissent même pas la programmation orientée objet et ne peuvent donc pas utiliser ce genre de procédé.