Bonjour,

J'utilise cette architecture depuis peu,
Voila je fais ce posts pour avoir quelques informations (complète si possible) sur l'architecture Mvc (Model View Controler).

Pourquoi utiliser Mvc ?
Que doit-on mettre dans la vue ?
Que doit-on mettre dans le controler ?
Que doit-on mettre dans le Model ?
Comment s'en servir ?

Si possible me mettre des exemples de code, je vous en remercie chaleuresement.

Guillaume

4 réponses


Salut,

c'est un peu gros comme question, impossible de répondre "vite fait".
On peut donner les grandes lignes.

Que doit-on mettre dans la vue ?
Que doit-on mettre dans le controler ?
Que doit-on mettre dans le Model ?

C'est dans les vue, que tu écris le code HTML.
(il n'y a jamais de code HTML, ni dans un controller, ni dans un model)

Un model c'est une classe que tu écris, qui regroupe toutes les requêtes que tu va faire en base de données, EN RAPPORT à ce model.
C'est à dire que pour gérer un "utilisateur", tu vas écrire une classe "userModel".
Dans cette classe, tu vas écrire toutes les fonctions qui "gèrent" un utilisateur en base de données :

  • ajouter un utilisateur
  • modifier un utilisateur
  • supprimer un utilisateur
  • récupérer les 10 derniers utilisateurs qui ont écrit un message sur ton blog
    ...

Un model n'a QUE des fonctions qui servent à interagir avec la base de données.

Si tu as un blog sur ton site,
tu vas devoir gérer des "articles",
alors comme "userModel", regroupe toutes les fonctions qui "gèrent" un "utilisateur" en base de données,
tu vas écrire aussi une autre classe, "postModel", qui regroupera toutes les fonctions qui "gèrent" un "article" en base de données.

Et ainsi de suite, si tu as d'autres "model" à gérer. (ex : un model "facture", ou "commande" pour les sites de vente en lignes...)

Un controller, est lui aussi, une classe que tu écris.

C'est le controller qui reçoit les "informations" (les variables $_GET, ou $_POST), et qui les "traite".
Il fait les opérations que tu lui a demandé de faire comme par exemple :

  • utiliser un model pour intéragir avec la base de données
  • créer des nouvelles variables qu'il enverra à une vue
  • modifier des variables de $_SESSION
    ...

à la fin de CHAQUE fonction d'un controller, il y a SOIT :

  • un appel à une vue (il affiche le code HTML de la vue)
  • il appel une autre fonction, d'un autre controller ou de lui-même, qui à son tour devra SOIT, appeler une vue, SOIT, appeler une autre fonction etc.

Mais à la fin, on doit toujours finir par une fonction qui appelle une vue (et oui il faut bien afficher quelque chose un moment quand même).

Donc un controller :

  • reçoit des informations
  • traite ces informations
  • utilise des model s'il en a besoin
  • créer des nouvelles variables pour une vue si besoin
  • fini un moment par "afficher" une vue

Voilà c'est pas ultra clair comme réponse,
mais de toutes façons c'est impossible à expliquer comme ça sur un forum.

Pour l'instant j'imagine que ça ne veut pas dire grand chose pour toi, c'est trop abstrait comme réponse, c'est normal, il faut suivre un tutoriel pour bien comprendre.

Je te conseille la formation qu'a fait Grafikart sur la programmation orientée objet.
C'est très bien expliqué, et c'est du concret, tu aura le code, à force d'avancer tu vas comprendre.
https://www.grafikart.fr/formations/programmation-objet-php

Pourquoi utiliser Mvc ?

L'idée c'est d'avoir un code "organisé", "séparé".
Le code est plus facilement "débugable", "maintenable", "évolutif"...

Un avantage énorme aussi c'est que, si tu travail avec une autre personne,
disons toi tu code la "structure", et l'autre personne s'occupe du design,
alors ça va vous faciliter la vie.
Le designer ne touchera qu'aux vue, et au CSS,
et toi : aux vue également, mais aussi à tout le reste (mais pas au CSS).
Toi tu écrira la "structure" de la vue, le fond, et le designer modifiera ensuite cette vue pour rajouter des classes aux balises HTML, et même réaranger la "structure" s'il en a besoin pour son design.

Comment s'en servir ?

C'est là que "l'explication" s'arrête.
Il faut regarder la formation que j'ai mentionné plus haut.

Playzer
Auteur

Merci beaucoup d'avoir pris le temps de m'expliquer tout ceci,
Il y aurait moyen que tu me fasse un exemple avec un code de connexion par exemple ?
http://hpics.li/cbbe7f4
Sur cette image est inscrit mon architecture, par exemple la je travail une page profil.php, son modele va etre profil.php et le controler faut qu'il s'appel profil.php ?
Ou alors je créer un fichier avec le nom de la classe ?
J'te remercie :)

Désolé j'ai "posté" alors que je n'avais pas vraiment fini,
j'ai édité mon 1er message

Il y aurait moyen que tu me fasse un exemple avec un code de connexion par exemple ?

Désolé j'ai vraiment la flemme, c'est long à bien faire.
Mais en plus ça servirai à rien, Grafikart l'a fait en vidéo, et bien mieux que je ne le ferai.

Du coup je répète ce que j'ai rajouté en éditant,
essaie de regarder ça :
https://www.grafikart.fr/formations/programmation-objet-php

Reviens poser des questions si tu en as après voir vu cette formation.
On y répondra avec plaisir.

hello, tu as aussi cet ancien tuto
et bravo à @SLK pour ta synthèse, c très clair.