|
Comment mettre en place une architecture MVC ?
|
| Auteur |
Message |
naholyr
Modérateur Programmation
    
Messages : 861
Groupe : Modérateur
Inscription : Aug 2006
Statut :
Hors ligne
Réputation : 18
|
RE: Comment mettre en place une architecture MVC ?
Longtemps j'ai fait du MVC sans le savoir. Voici comment je procède quand je dois développer une petite appli vite fait j'ai toujours l'habitude d'utiliser le modèle suivant, qui est un "mini-mvc" :
- index.php
- pages/
- *.php
- templates/
- *.php
Tout passe par index.php, c'est en général le seul script accessible. Les autres sont dans des dossiers (comme "includes/") avec un .htaccess pour en interdire l'accès.
Une autre méthode consiste à définir une constante dans index.php, et dans tous les autres scripts on vérifie que cette constante est définie : si ce n'est pas le cas => erreur. Mais c'est un peu plus pénible que le .htaccess 
En gros, index.php ressemble à ça :
<?php
include 'includes/common.php'; // mes includes
// lecture de la page demandée $page = isset($_GET['page']) ? $_GET['page'] : 'default'; $page = basename($page); // protection sommaire pour éviter une faille avec ?page=../../..... if (!is_file('pages/'.$page.'.php')) { $page = 'default'; }
// partie métier, pas d'affichage include 'pages/'.$page.'.php';
// affichage via un script simpliste include 'templates/'.$page.'.php';
?>
Ainsi je me contente d'appeler le bon script dans "pages/" qui se contente de faire des calculs & cie.
Et ensuite j'inclus le script correspondant dans "templates/". Pas de moteur de template, juste de l'auto-discipline : le script "template" ne doit contenir que des instructions d'affichage, aucun traitement. Et inversement pour le script "page".
C'est tout simple, et ça n'a pas grand-chose à voir avec la POO dans ce cas. La POO dans un schéma comme celui là ne fait qu'apporter des contraintes supplémentaires, un "cadre" plus strict et donc évite de pourrir le schéma (parce que si on ne s'auto-discipline pas dans cette structure, on peut très bien la faire exploser, ce qui n'est pas le cas quand on utiliser un framework comme Zend où si on ne suit pas la route tracée, ça ne marche tout simplement pas).
Pour avoir un "vrai" MVC pour les puristes, il faudrait créer une classe View, Model, et Controlleur pour encapsuler tout ça. Mais de base, on pourrait renommer "index.php" en "controller.php", "pages/" en "models/" et "templates/" en "views/" et ce serait presque du du MVC comme dans les manuels .
Quant au débat sur l'utilité de la POO, je vous assure que quand on s'y met c'est absolument indiscutable. Rien à voir tant en terme de lisibilité globale du code qu'en terme de maintenance et d'évolution de l'application. Mais le but de mon message c'est surtout de montrer qu'on n'est pas obligé de TOUT prendre dans un modèle. On peut très bien se contenter du concept global, et l'adapter à la taille du projet
Ressources [PHP][MySQL][ prototype.js]
Projet Dei - Le jeu [Statut=Conception]
naholyr@jabber.fr
Ce message a été modifié le: 06-06-2007 06:47 PM par naholyr.
|
|
| 06-06-2007 06:45 PM |
|
 |
Loetheri
Membre
Messages : 868
Groupe : Membre
Inscription : Aug 2006
Statut :
Absent
Réputation : 10
|
RE: Comment mettre en place une architecture MVC ?
Sephi-Chan, oui, l'objet est un effet de mode. Cette mode est assez bien implémenté sur ce forum. naholyr nous montre encore une fois ce que je dis.
Je crois cependant que nous sommes d'accord. Il faut rester au plus bas niveau (cela ne s'applique pas qu'au PHP). En somme, utiliser Smarty et compagnie n'est pas intéressant.
Il faut cependant modérer la chose. Il est parfois très utile de passer par une sur-couche mais cela reste des cas rares et pour des projets assez conséquents. Un site Internet ne rentre pas dans ce cas.
|
|
| 06-06-2007 06:54 PM |
|
 |
Sephi-Chan
Administrateur
      
Messages : 4,288
Groupe : Administrateur
Inscription : Aug 2006
Statut :
En ligne
|
RE: Comment mettre en place une architecture MVC ?
Oui donc en gros si on veut faire du pseudo-MVC (je suis pour la séparation traitement/affichage, mais pas contre la sur-séparation de tout), il suffit de créer les phrases retournées et les affecter à des variables qui seront affichés dans la deuxième partie de la page : l'affichage.
Sephi-Chan, non ?
|
|
| 06-06-2007 06:58 PM |
|
 |
Caribou
Membre
Messages : 95
Groupe : Membre
Inscription : Oct 2006
Statut :
Hors ligne
Réputation : 2
|
RE: Comment mettre en place une architecture MVC ?
ouai sauf que techniquement il me semble que le systeme de template c'est plutot l'inverse, on charge l'affichage, on le traite, et on retourne le resultat, probablement histoire de gerer les boucles (tableau, ect..)
mais bon perso je vois pas trop l'interet, c'est pas comparable au xHTML/CSS
Enfin je vois pas l'interet de faire ça quand il s'agit d'un projet que tu dev pour toi, par contre pour un projet que tu distribue à but lucratif ou gratuit là ya un interet, permettre au futur utilisateur qui connait rien en programmation de changer l'aspect du site plus facilement... mais sinon pour soi ça sert pas vraiment mise à part une satisfaction personnel.
enfin comme je disais c'est juste mon avis, ça ne tiens qu'a moi
Projet de WarGame en cours...
BrainStorming: 80%
Siteweb: IE/FF ca s'arrange..
Graphisme: Quelques tiles (provisoir)
Prog: 16%
(Bosse sur les profils maintenant...)
Ce message a été modifié le: 06-06-2007 07:24 PM par Caribou.
|
|
| 06-06-2007 07:18 PM |
|
 |
Nessper
Membre
Messages : 702
Groupe : Membre
Inscription : Sep 2006
Statut :
Hors ligne
Réputation : 12
|
RE: Comment mettre en place une architecture MVC ?
Au passage, tu développes Okracoke en utilisant PHP et le design pattern MVC ?
Non parce que j'ai fait mes dents en php la-dessus donc la code est ce que j'appelle du php bourrin (des fichiers php avec tout mélangé à l'intérieur et des classes (des sets de méthodes plutôt) à part) . C'est très bourrin mais trop long de tout revoir en MVC.
Pour ce qui est du MVC je fais exactement comme Naholyr : un fichier index.tpl par lequel tout est appelé. Ensuite je fais le raccord entre mes fichiers .inc.php et les .tpl par le index.php.
Pour ce qui est de l'architecture je l'organise de la façon suivante :
site
|_html
| _ images
|_ js
|_ tous les fichiers .js
| _ stylesheet
|_ tout les fichiers .css
|_ pages
|_ tous les fichiers .inc.php
|_ index.php
|_templates
| _ pages
|_ tous les fichiers .tpl
|_ index.tpl
|_.htaccess
|_config.inc.php
Oui donc en gros si on veut faire du pseudo-MVC (je suis pour la séparation traitement/affichage, mais pas contre la sur-séparation de tout), il suffit de créer les phrases retournées et les affecter à des variables qui seront affichés dans la deuxième partie de la page : l'affichage.
OUi c'est ça. tu crée tes variables dans le .php, tu les assignes à ton .tpl dans lequel tu les affiches. Ca permet d'avoir des pages très lisibles en fait. Moi c'est le plus gros intérêt que je vois.
Si on pouvait faire de la flemme son métier, il y a longtemps que je serais professionnel .
Ce message a été modifié le: 06-06-2007 07:20 PM par Nessper.
|
|
| 06-06-2007 07:19 PM |
|
 |
naholyr
Modérateur Programmation
    
Messages : 861
Groupe : Modérateur
Inscription : Aug 2006
Statut :
Hors ligne
Réputation : 18
|
RE: Comment mettre en place une architecture MVC ?
ouai sauf que techniquement il me semble que le systeme de template c'est plutot l'inverse, on charge l'affichage, on le traite, et on retourne le resultat, probablement histoire de gerer les boucles (tableau, ect..)
mais bon perso je vois pas trop l'interet, c'est pas comparable au xHTML/CSS
J'ai l'impression que tu mélanges des choses à te lire. En effet un système de template n'est pas comparable à XHTML/CSS, puisque ça reviendrait à comparer un moule d'un côté et un gateau de l'autre.
Enfin je vois pas l'interet de faire ça quand il s'agit d'un projet que tu dev pour toi, par contre pour un projet que tu distribue à but lucratif ou gratuit là ya un interet, permettre au futur utilisateur qui connait rien en programmation de changer l'aspect du site plus facilement... mais sinon pour soi ça sert pas vraiment mise à part une satisfaction personnel.
C'est au contraire pour ses projets perso qu'il faut être attentif : personne ne va décider des conventions à ta place (contrairement à un projet pro en groupe) et ça peut très vite partir en cacahouètesi tu ne t'auto-disciplines pas !
Ressources [PHP][MySQL][ prototype.js]
Projet Dei - Le jeu [Statut=Conception]
naholyr@jabber.fr
|
|
| 06-06-2007 07:56 PM |
|
 |
Caribou
Membre
Messages : 95
Groupe : Membre
Inscription : Oct 2006
Statut :
Hors ligne
Réputation : 2
|
RE: Comment mettre en place une architecture MVC ?
Le terme "compare" n'était peut etre pas des plus judicieux, mais on parle de systeme de couches, la feuille de style en est un, et son interet est largement plus grand, c'est ça que je voulais dire.
Ben les templates ce n'est qu'un choix personnel, si tu aimes séparé le code php du reste, c'est ton choix, je dis pas que c'est bien ou pas bien, y'a du mérite à vouloir faire quelque chose de propre ça c'est sur.
Un autre exemple j'imagine mal un mec commenter son code pour un script qu'il reserve à un usage personnel, mais pourquoi pas, au moins si tu codes plus pendant un temps et oublie des choses, finalement ça peux aider à s'y retrouver plus rapidement... dans des milliers de lignes de codes ça doit avoir son interet je pense.
Mais l'utilisation la plus courante des commentaires c'est surtout pour ceux qui vont lire ton code, et bien les templates c'est un peu le meme principe, c'est surtout pour ceux qui vont utiliser ton programme.
(Remarque pour les commentaires, peut etre que dans des milliers de lignes de code, c'
Moi ce qui m'importe c'est la stabilité et l'optimisation car ça va concerner mes visiteurs, apres la lisibilité du code ça, c'est mon probleme, si je m'y perd ben j'evoluerai, pour l'instant ça ne m'est jamais arrivé... enfin si lol mais pas en php.
Projet de WarGame en cours...
BrainStorming: 80%
Siteweb: IE/FF ca s'arrange..
Graphisme: Quelques tiles (provisoir)
Prog: 16%
(Bosse sur les profils maintenant...)
Ce message a été modifié le: 06-06-2007 08:38 PM par Caribou.
|
|
| 06-06-2007 08:32 PM |
|
 |
Mysterarts
Modérateur JeuPHP
    
Messages : 2,477
Groupe : Modérateur JeuWeb
Inscription : Jan 2007
Statut :
Hors ligne
Réputation : 33
|
RE: Comment mettre en place une architecture MVC ?
Moi perso, la séparation que je fais, c'est de placer mes fonctions dans un fichier à part => fonction.php, pareil pour les configuration (genre BDD) => config.php, et pis c'est tout 
Je te suis sur ce que tu dis à propose des modes sephi-chan...
EN même temps, hein, je critique pas ce qui savent l'utiliser de manière utile, bien sûr 
Autre choses : chaque page de mon ancien jeu été comme ça :
include haut.php
//le script
include bas.php
Comme ça, pour tout ce qui est changement de design, aucun problème, par exemple...
Ce message a été modifié le: 06-06-2007 09:40 PM par Mysterarts.
|
|
| 06-06-2007 09:38 PM |
|
 |
LexLxUs
Membre
Messages : 2,490
Groupe : Membre
Inscription : Aug 2006
Statut :
Hors ligne
Réputation : 0
|
RE: Comment mettre en place une architecture MVC ?
Sinon bon petite remarque amicale hein je dis pas ça mechamment, mais ça me fait toujours rire les gens qui repondent "Google!" genre on connait pas lol, le site inconnu, enfin le coté drole c'est qu'un forum c'est fait pour discuter de tout et de rien.. enfin surtout du theme je vous l'accorde, mais bon j'imagine que genre 80% des questions posé ici on pourrait répondre "va sur Google c******!" en clair on peux fermer le forum dans ce cas et on va tous squater Google.
Merci, mais j'ai autre chose à faire que "réinventer la roue".
|
|
| 06-06-2007 10:01 PM |
|
 |
Sephi-Chan
Administrateur
      
Messages : 4,288
Groupe : Administrateur
Inscription : Aug 2006
Statut :
En ligne
|
RE: Comment mettre en place une architecture MVC ?
Dans ce cas mieux vaut ne pas répondre plutôt que me filer un lien vers Google.
Sephi-Chan, qui a l'impression que les gens deviennent prétentieux sur ce forum...
|
|
| 06-06-2007 10:32 PM |
|
 |
|
|