JeuWeb - Crée ton jeu par navigateur
Comment faire son code proprement en MVC2 ? - 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 faire son code proprement en MVC2 ? (/showthread.php?tid=4394)

Pages : 1 2 3


Comment faire son code proprement en MVC2 ? - oualala - 10-10-2009

Bonjour, bonjour!

Ses derniers temps je galère beaucoup à chercher un bon principe de base pour mon site web. Je me pose plusieurs questions, dois-je avoir un seul controller, worker et ihm? Ou est-ce que chacun dois être séparé(chaque page son ctrl, wrk, par contre ihm toujours le même)?
Et aussi, comment dois-je faire pour les requêtes sql? Est-ce que je dois créer un fichier Bdd.class.php contenant les requêtes de base avec comme signature les attributs genre tables, etc...? Ou est-ce que je tape les requêtes en dur, dans le code?

J'ai déjà fait des applications java, mais c'était sur une seule page, pas sur 50. Du coup sa change complétement la donne, et je suis légèrement perdu...

Avez-vous de bonne solutions pour que ce soit ergonomique et rapide? Merci d'avance!


RE: Comment faire son code proprement en MVC2? - Sephi-Chan - 10-10-2009

Pourquoi n'utilises-tu pas un framework MVC ? Quel que soit ton langage, il y en a un paquet.

Rien que pour PHP, tu peux regarder du côté de Symfony, de Zend Framework, de CakePHP, de Jelix, de Code Igniter, etc.

Ils implémentent ce design pattern et leur maturité fait qu'ils ont déjà répondus aux problématiques que tu te poses. Les utiliser (ou, à défaut, t'en inspirer) est la meilleure chose à faire pour le développement propre d'applications pérenne adaptés à la production.


Sephi-Chan


RE: Comment faire son code proprement en MVC2? - QuentinC - 10-10-2009

Question peut-être conne, mais quelle est la différence entre MVC1 et MVC2 ? Je ne comprends pas bien la nuance qu'il y a entre les deux, malgré une petite recherche.


RE: Comment faire son code proprement en MVC2? - Sephi-Chan - 10-10-2009

Le MVC 2 utilise un contrôleur frontal, qui s'occupe de tout router.

Toutefois, j'ai du mal à différencier les deux en pratique : dans Ruby on Rails, les contrôleurs héritent d'un contrôleur principal (généralement nommé ApplicationController). A-t-on dans ce cas un MVC ou un MVC 2 ?

Je ne me rappelle plus exactement comment font les autres frameworks que j'ai essayé. En tout cas, ils parlent de MVC dans leur description, jamais ils ne précisent s'il s'agit d'une déclinaison du design pattern ou l'autre.

Je pense que tous les frameworks Web utilisent en fait MVC 2 (puisque généralement, ils utilisent un système de routage). Le MVC de base me fait plus penser à celui qu'on trouve dans les frameworks système comme Cocoa (pour Objective-C) où — de ce que je me souviens et de ma maigre expérience — on a un contrôleur pour presque chaque composant.


Sephi-Chan


RE: Comment faire son code proprement en MVC2? - oualala - 11-10-2009

D'après ce que j'ai appris, dans MVC le model peut parler(envoyer des données, lancer une méthode, etc...) à l'IHM sans passer par le controller, voici le schéma: http://fr.wikipedia.org/wiki/Fichier:ModeleMVC.svg

Tandis qu'en MVC2 TOUT passe par le controller. L'autre différence c'est que en MVC2, l'ihm peut parler et recevoir quelques chose du controller, pareil pour le model. Tandis qu'en MVC le model peut juste recevoir une réponse.


RE: Comment faire son code proprement en MVC2? - Allwise - 11-10-2009

"Le modèle parle à l'IHM", j'ai du mal avec cette définition. Le modèle se contente de renvoyer bêtement les données qu'on lui demande, il ne fait rien d'autre. Les seules méthodes qu'il lance devraient être, a priori, les siennes, en interne.
Dans tous les cas on passe par le controller, c'est lui qui décide s'il fait appel au modèle et s'il y a une vue ( qui peut à son tour décider d'appeler le modèle ). On peut se passer d'une vue, d'un modèle, mais jamais du controller.

Dans un cas comme dans l'autre tout passe par le controller. MVC2, d'après ce que j'ai compris c'est du MVC classique avec un controller uniquement. A part le petit avantage de tout centraliser dans un fichier, qui peut être un inconvénient en fonction de la taille de l'appli, je cerne pas l'avantage de cette pratique. C'est peut-être cool pour les toutes petites applications... Mais peut être l'ai-je mal comprise.


RE: Comment faire son code proprement en MVC2 ? - QuentinC - 11-10-2009

Séphi-Chan, quand tu parles de système de routage, est-ce que des règles de réécriture écrites dans un .htaccess comptent ? ou bien tu veux parler d'autre chose ?


RE: Comment faire son code proprement en MVC2 ? - Sephi-Chan - 11-10-2009

Je parle du routage côté langage de programmation, même s'il est généralement rendu possible grâce à une réécriture du serveur Web.

Je m'explique. Généralement, les frameworks utilisent une règle de réécriture qui va diriger toutes les requêtes qui ne correspondent pas à un fichier statique vers un fichier unique, qui sera le point d'entrée unique de l'application. C'est ce qui me fait penser que les frameworks Web utilisent MVC 2.

Pour moi, implémenter un MVC 1 revient à avoir des fichiers statiques (dans le sens physique, sur le disque) pour chaque contrôleur. Par exemple articles.php, qui contiendrai alors des appels à un modèle et s'achèverai par le rendu d'une vue. On lui transmettrait des actions par un paramètre GET.

Après… Je dis peut-être des conneries. Je n'ai pas vraiment réfléchi à la question. C'est juste la manière dont je vois les chosesau premier coup d'œil.


Sephi-Chan


RE: Comment faire son code proprement en MVC2 ? - vainsang - 23-01-2010

Pour ma part, je considère que Symfony implémente le modèle MVC 2.

L'idée de base de MVC, selon moi, c'est qu'il y a effectivement un contrôleur par modèle. Pour chaque concept métier manipulé (article, catégorie, utilisateur, etc...) on a donc un contrôleur qui doit être utilisé par la vue. Le problème c'est que l'on se retrouve vite avec énormément de contrôleurs à gérer.

MVC 2 est une évolution de MVC, qui peut être interprétée comme MVCC :
En plus des multiples contrôleurs du MVC, on a un contrôleur frontal qui s'occupe de rediriger n'importe quel requête vers le bon contrôlleur.

En symfony, on a par défaut 2 controlleurs frontaux à utiliser au choix, définis à la racine du répertoire web du site. Le premier est l'index.php, le second permet d'afficher des informations de débug pour le développeur.

Ce contrôleur frontal s'occupe ensuite de tout un tas de choses, et entre autres de rediriger le module correspondant à la requête qui saura quoi faire en fonction de l'action.


RE: Comment faire son code proprement en MVC2 ? - Argorate - 26-01-2010

(23-01-2010, 09:07 AM)vainsang a écrit : Pour ma part, je considère que Symfony implémente le modèle MVC 2.

L'idée de base de MVC, selon moi, c'est qu'il y a effectivement un contrôleur par modèle. Pour chaque concept métier manipulé (article, catégorie, utilisateur, etc...) on a donc un contrôleur qui doit être utilisé par la vue. Le problème c'est que l'on se retrouve vite avec énormément de contrôleurs à gérer.

MVC 2 est une évolution de MVC, qui peut être interprétée comme MVCC :
En plus des multiples contrôleurs du MVC, on a un contrôleur frontal qui s'occupe de rediriger n'importe quel requête vers le bon contrôlleur.

En symfony, on a par défaut 2 controlleurs frontaux à utiliser au choix, définis à la racine du répertoire web du site. Le premier est l'index.php, le second permet d'afficher des informations de débug pour le développeur.

Ce contrôleur frontal s'occupe ensuite de tout un tas de choses, et entre autres de rediriger le module correspondant à la requête qui saura quoi faire en fonction de l'action.

Salut, petite remarque:

MVC 1 : autant de contrôleur que de cas d'utilisation.
MVC 2 : Un seul contrôleur qui s'occupe de tous les cas d'utilisations.

Il n'y a dans la théorie pas d'histoire de redirection sur des sous contrôleurs, cela fait directement appel aux traitements.
Cela sert a centraliser pour une meilleur maintenabilité.

Après dans la pratique je veux bien qu'on fasse un mixte entre MVC 1 & 2:
MVC 1.5? :p