|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Invité de passage
![]() Inscription : février 2010 Messages : 12 ![]() |
Bonsoir a tous,
Je suis en train de développer une application PHP selon le modèle MVC. Je me pose la question si l'architecture de mon application est bien correcte. Voici un exemple de mes différents fichiers : Voici le code pour le le model de donnée (acces à la BD) : Code :
Code :
Code :
Est ce que le fait de créer des objets métier (User) dans le contrôleur est il une méthode correcte au niveau MVC ? Ou est ce que ceci doit uniquement être fait au sein de la partie modèle ? De plus avec une méthode comme celle-ci, j'utilise mes objets au sein de la vue, par exemple dans une vue pour afficher un utilisateur, j'ecrirais : $user->getName(). Faut-il pas utilisé des variables simple ou des tableaux ? C'est la première fois que je développe une application en orienté Objet en suivi le modèle MVC, je codais encore de manière procédural il y a encore peu de temps. J avoue je suis un peu perdu, et j espère que vos explications m'éclaireront sur le sujet. Merci pour votre aide |
||||||
|
|
00
|
|
|
#2 |
|
Invité de passage
![]() Inscription : février 2010 Messages : 12 ![]() |
Voici le diagramme de classe de l'application, uniquement la partie "modèle" de ma structure MVC. J'hésite entre différentes solutions, et je sais pas vraiment laquelle serait la plus adaptée.
![]() * Une classe pour la représentation de l'objet dans la base (User.php) et une classe pour la liaison avec la base de données (UserModel.php). Solution présentée dans la pièce jointe. * Une seule classe pour la représentation de l'objet avec comme méthodes, les différentes requêtes SQL pour la liaison avec la base de données. * Une seule classe permettant la liaison avec la base de données et aucune représentation de l'objet. C'est a dire que cette solution me retournerai simplement un tableau de données qui sera utilisé par mes contrôleurs et mes vues. Dans les deux premières solutions, se sont des objets qui seront utilisé pour représenter les données au sein des contrôleurs et des vues, et non des tableau de données. Merci pour votre aide |
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() Baptiste ROUSSELÉtudiant Inscription : janvier 2011 Messages : 802 ![]() |
Pour ma part tant que dans la vue tu ne bosse pas sur un modèle ou bien sur un objet travaillant un modèle je pense que tu restes dans l'optique du MVC.
Manipuler un objet ou un tableau c'est pareil. Dans certains langages un objet peut être manipulé comme un tableau.
__________________
|
|
|
00
|
|
|
#4 |
|
Expert Confirmé
![]() Olivier Développeur Web Inscription : août 2003 Messages : 1 837 ![]() |
Pourquoi faire un model User et un modèle Bdd User ?
Le but du modèle est justement de gérer les données. Tu peux avoir éventuellement une collection d'User, mais de mon point de vue un objet user doit avoir des méthodes du genre edit(),save(),find() ... |
|
00
|
|
|
#5 | ||||
|
Invité de passage
![]() Inscription : février 2010 Messages : 12 ![]() |
Le problème que j'ai, c est que dans mes vues, j'utilise des objets pour afficher les données, du coup, la vue communique directement avec le modèle.
Par exemple, dans ma vue "info_user.php", il y aura qqch comme : Code :
------------------------------------------------------------------ En ce qui concerne l'idée d'avoir un classe modèle par entité, rejoint donc ma première idée, et si j ai bien compris, ceci reviendrai a obtenir une classe du genre : Code :
|
||||
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Baptiste ROUSSELÉtudiant Inscription : janvier 2011 Messages : 802 ![]() |
Tu peux sans souci utiliser des objets dans tes vues, mais il faut que ces objets aient été instanciés dans le contrôleur et qu'ils n'agissent pas comme des modèles, sinon tu casses le MVC.
__________________
|
|
|
00
|
|
|
#7 |
|
Membre habitué
![]() Omar Inscription : septembre 2010 Messages : 146 ![]() |
Salut, en fait j'ai pas bien lit ton message mais juste voyant php+mvc m'a incité à te conseiller d'utiliser un framework au lieu de faire ton propre mvc
|
|
|
00
|
|
|
#8 | |
|
Membre Expert
![]() Baptiste ROUSSELÉtudiant Inscription : janvier 2011 Messages : 802 ![]() |
Citation:
Je déconseille vivement ce genre de framework pour des petits projets... C'est du temps perdu selon moi pour le développement si on a besoin de se former ainsi que pour la maintenance. Dans la construction on ne détruit pas un bâtiment à coup de bombe H, donc pourquoi faire différemment dans le dev ?
__________________
|
|
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : février 2010 Messages : 12 ![]() |
Ok merci pour votre aide, mon projet avance plutôt bien !
AU niveau des frameworks, du fait que c'est un projet de diplôme, l'application doit se faire HomeMade. Mais c'est vrai que les frameworks sont intéressant pour le développement d'application web MVC. Comme "petit" framework pour des projets assez simple, il y a CakePHP et codigniter qui sont vraiment pas mal. Après c est vrai que pour les projets plus importants, Zend ou encore Symfony sont d'excellents outils, mais bien plus compliqué à prendre en main. J'aurai encore un petite question, en ce qui concerne la structure MVC en POO, est-ce que les vues sont aussi des objets ? Avec du genre des méthodes, setdata() pour récupérer les données et render() pour obtenir le rendu HTML ? Est-ce que ceci ne dérange pas au niveau MVC, du fait que nous que la vue des plus simplement du HTML-CSS, mais une classe ?!? |
|
|
00
|
|
|
#10 |
|
Membre habitué
![]() Omar Inscription : septembre 2010 Messages : 146 ![]() |
oui selon la philosophie de zend les vues sont des classes
|
|
|
00
|
|
|
#11 | |
|
Membre Expert
![]() Baptiste ROUSSELÉtudiant Inscription : janvier 2011 Messages : 802 ![]() |
Citation:
Il serait bête de mettre le code pour parser le fichier de rendu dans chaque action du contrôleur.
__________________
|
|
|
|
00
|
|
|
#12 | |
|
Invité de passage
![]() Inscription : février 2010 Messages : 12 ![]() |
Citation:
Car pour le moment, mes vues sont des fichier PHP avec du code HTML et des variables récupérées depuis le controleur, mais je ne parse rien du tout. |
|
|
|
00
|
|
|
#13 | ||
|
Invité de passage
![]() Inscription : février 2010 Messages : 12 ![]() |
Voici l'exemple d'une vue que je pense utilisé si elle est correcte :
Code :
|
||
|
|
00
|
|
|
#14 |
|
Membre Expert
![]() Baptiste ROUSSELÉtudiant Inscription : janvier 2011 Messages : 802 ![]() |
Les vues sont souvent générées par un moteur de template (PHPLib, Smarty, ect).
De là vient mon utilisation du mot parser. Il y a aussi les solutions comme tu le présentes qui impliquent directement du code PHP dans la vue pour l'affichage des variables mais je trouve cela assez moche et peu sécurisant (du fait qu'on doit sécuriser dans chaque fichier de Vue au lieu de centraliser dans une class).
__________________
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com