Mon site en MVC avec PHP

Mon site en MVC avec PHP

03 fév | Catégorie: PHP | Rédigé par Léo | 5379 lectures

Ce tutoriel vous explique comment réaliser votre site internet en utilisant le modèle dit MVC (Modèle Vue Contrôleur). Vous verrez qu'avec cette méthode, il vous sera très facile de gérer et réaliser votre site. Il ne vous faudra que quelques bases en PHP.

 

 

Qu'est ce que MVC ?

Selon Wikipédia : "Le Modèle-Vue-Contrôleur (en abrégé MVC, de l'anglais Model-View-Controller) est une architecture et une méthode de conception qui organise l'interface home-machine (IHM) d'une application logicielle. Ce paradigme divise l'IHM en un modele (modèle de données), une vue (présentation, interface utilisateur) et un contrôleur (logique de contrôle, gestion des événements, synchronisation), chacun ayant un rôle précis dans l'interface. Cette méthode a été mise au point en 1979 par Trygve, qui travaillait alors sur Smalltalk dans les laboratoires de recherche Xerox."

En gros, MVC, appliqué à un site internet est une séparation totale entre le comportement de l'application, les données de votre site, et le résultat HTML. Ceci impose donc une bonne hiérarchie de rangement de vos dossier et fichiers. Cette petite application sera composée d'un contrôleur qui, comme son nom l'indique, contrôle vos actions et les pages à afficher. Un ou des modèles, qui sont ici des fragments de pages que l'on incluera dans un fichier dit "principal". Et une vue qui est le rendu HTML.

Voila une représentation de ma hiérachie de dossier:

Modèle MVC

Explications dans l'ordre de l'image ci-dessus:

Dossier design -> c'est ici que vous déposerez tout ce qui concerne le design de votre site et uniquement le design. C'est à dire tous les fichiers.css et les images de background.

Dossier entrepot -> dans ce dossier vous entreproserez tous vos medias, les images illustratives des articles par exemple, vos vidéos et musiques.

Fichier index.php -> c'est votre contrôleur. Nous verrons son fonctionnement plus tard.

Dossier pages -> dans ce dossier se trouverons tous vos fragments de pages, ces fragments sont les Modèles. L'extention reste .php, j'utilise .frg.php simplement pour un soucis de lisibilité.

Dossier squelettes -> ce dossier aura tous vos fichier dit squelettes, c'est à dire la structure de vos pages. Ces fichiers squelette comporte le DOCTYPE, les balises head et les méta données par exemple. Dans ce tutoriel nous n'utiliserons qu'un seul squelette que je nomme principal.

Dossier travailleur -> Ici vous mettrez tous vos script, application flash etc ...

Fichier index.php - Votre contrôleur

Pour commencer regardons le code de notre exemple :


$titre -> variable qui sera afficher dans les balise <title>

$squelette -> initialisation du squelette. Dans cette variable il faut mettre le chemin vers votre squelette à partir de l'endroit ou s'éxécute votre fichier "index.php".

$page -> initialisation de la variable page. La variable page possède le chemin de votre fragment affiché. il est nécéssaire de l'initialiser pour afficher, par défaut, un fragment. Par exemple on lui demande d'afficher accueil.frg.php.

Un petit rappel: Les variables superglobal de type $_GET[’ma_valeur']; récupèrent les paramètres passés dans l'URL. Par exemple dans notre exemple, quand on change de page on a l'URL suivante :

http://snoupix.com/demo/MVC/index.php?page=page1

Si on demande d'afficher $_GET['page'] on aura page1. C'est comme cela qu'on peut savoir quel fragment afficher. De plus isset() est une fonction php qui vérifie si ce qui lui est passé en paramètre existe. Donc la condition vérifie qu'il y à bien une récupération de la valeur page. Si cette valeur existe on redéfinie la variable $page pour afficher le fragment voulue.

Et pour finir nous devons implement inclure grâce à la fonction include() notre squelette.

Fichier principal.frg.php

Regardons le code :

 


Le fichier principal.frg.php est une page HTML banale avec toutes les données HTML. Il faut juste regarder dans la div conteneur où se trouve un bout de code PHP comme <?php include($page); ?>. C'est tout simplement ici que seront inclus, ou importés les fragments.

Pour finir, dans les fragment vous mettrez tous ce que vous désirez. C'est à dire, code html, code php, image, texte etc...

Bonne programmation à vous

Creative Commons License
Cette création par Snoupix.com est mise à disposition selon les termes de la licence Creative Commons.
Partager ce tutoriel :
wikio scoopeo fuzz diggfr digg-design blogmemes delicious tapemoi yoolink bluegger pioche

14 Commentaires

gravatar
le 16 avril à 00h04 romuz Répondre Je suis pas certain que t'ai saisi la mécanique du MVC : http://tahe.developpez.com/web/php/mvc/

Ce que tu proposes est juste une hierachie de dossier et des passages de variable via des $_GET (qui plus est, non sécurisé dans ton exemple) et non une architecture MVC. Valable pour un petit site en php mais pas pour une application orienté métier.
gravatar
le 30 avril à 17h30 chafouai Répondre Je voix pas les trois couches principales du modéle MVC( modèle, vue, contrôleur).
gravatar
le 04 mai à 23h32 Axel Répondre Effectivement, moi non plus.
gravatar
le 02 juillet à 17h34 leknopppix Répondre J'ai pas trop compris l'utilité du mvc lors d'un projetn cependant je vais continuer à faire des recherches pour acquérir à 100% les connaissances suffisante pour comprendre ce système
gravatar
le 21 août à 23h04 Neuromancien Répondre Ce n'est pas du tout une architecture MVC...
gravatar
le 23 octobre à 16h25 Fred Répondre Je confirme les autres commentaire, rien à voir avec une structure MVC !!!!!
gravatar
le 04 novembre à 17h00 jarmino Répondre pas compris!!
gravatar
le 26 novembre à 07h33 stomerfull Répondre moi aussi

je vois pas du tout l'architecture MVC

??
gravatar
le 15 décembre à 14h26 pepsi Répondre Comme tout le monde, je pense que tu n'as pas compris l'architecture MVC.

Essayer une framework php orienté objet et conçu sur le modèle MVC me paraît une solution plus profitable et rentable a moyen terme que de réinventer la poudre en recréant son propre framework pas MVC qui plus est.

Ton exemple est d'ailleurs significatif de ce qu'il ne faut pas faire au niveau de l'appel de ta variable $page qui malgré la fonction ISSET est totalement passoire.

Un petit tour sur le blog de grafikart pour commencer sur un framework php comme cakephp par exemple. J'ai commencer l'objet et le MVC grâce à ses podcast.

@+++
gravatar
le 19 décembre à 02h10 charly Répondre Effectivement tu n'as rien compris à l'architecture MVC étant donné que ton code n'est même pas orienté objet.
gravatar
le 11 janvier à 16h33 eric Répondre PTDR pepsi ! et moi je crois que tu n'as pas bien compris pepsi ce qu'est un framework !
à titre d'exemple on peut très bien créer un site en MVC sans avoir à utiliser de framework et ici là n'est pas la question de framework dailleurs je me demande bien ce que ca vient foutre là ce que tu dis car ca n'a aucun rapport a vouloir réinventer la roue comme on dit.

Avant de venir donner des leçons réfléchis à ce que tu dit.
et pour tout ceux qui radotent "Effectivement tu n'as rien compris à l'architecture MVC" Excusez du peu mais vous êtes vraiment une bande de cons ! On n'a pas besoin de l'écrire 100 mille fois ce que vous dites on l'a bien compris !

Et vous ? au lieu de radoter toujours la même chose : vous avez compris ce qu'est un MVC ?? non assurément car si c'était le cas vous auriez déjà réaliser un didacticiel.
à bon entendeur...
gravatar
le 17 mars à 14h35 phil Répondre C'est vrai qu'il manque quelque chose d'important à ce code pour faire du MVC.

Il faut que la page incluse ($page) soit divisée en deux page : la vue et le modèle.

Sinon je suis d'accord avec eric, les autres remarques ne sont pas très intéressantes ;D
gravatar
le 03 avril à 19h42 plop Répondre Ok eric alors imagine tu es persuadé de pouvoir t'exprimer comme bon te semble et là il y a un seul pinpin (au hasard plop) qui vient te dire que tu te laisse un peu trop aller, tu te remets en question ou pas ?

Je suppose qu'on est d'accord, non parce que pour faire un tuto sur le MVC avec une belle image "Mon site en MVC" faut vraiment être persuadé de faire du MVC.

Donc je vais me permettre de radoter aussi, c'est pas du MVC.

Mais je meurs d'impatience de voir ton didacticiel !
gravatar
le 13 juillet à 15h55 flant Répondre J'utilise un CMS est ce que est il possible d'avoir le script complet d'un site avec MVC utilisant une base de donnée.
Au juste je veux quitter les CMS. Que me conseiller vous je suis débutant.

Requête en cours, veuillez patienter...

Ajouter un commentaire