JeuWeb - Crée ton jeu par navigateur
Comment mettre en place une architecture MVC ? - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Comment mettre en place une architecture MVC ? (/showthread.php?tid=1227)

Pages : 1 2 3 4 5 6


RE: Comment mettre en place une architecture MVC ? - naholyr - 06-06-2007

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" :
Code :
- 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 Wink
En gros, index.php ressemble à ça :
Code PHP :
<?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 Wink.

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 Smile


RE: Comment mettre en place une architecture MVC ? - Loetheri - 06-06-2007

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.


RE: Comment mettre en place une architecture MVC ? - Sephi-Chan - 06-06-2007

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 ?


RE: Comment mettre en place une architecture MVC ? - Caribou - 06-06-2007

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


RE: Comment mettre en place une architecture MVC ? - Nessper - 06-06-2007

Sephi-Chan a écrit :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 :
Code :
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

Sephi-Chan a écrit :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.


RE: Comment mettre en place une architecture MVC ? - naholyr - 06-06-2007

Caribou a écrit :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.

Citation :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 !


RE: Comment mettre en place une architecture MVC ? - Caribou - 06-06-2007

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.


RE: Comment mettre en place une architecture MVC ? - Mysterarts - 06-06-2007

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...


RE: Comment mettre en place une architecture MVC ? - Plume - 06-06-2007

Citation :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".


RE: Comment mettre en place une architecture MVC ? - Sephi-Chan - 06-06-2007

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...