Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4191 connectés 

 


 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  17  18  19  ..  62  63  64  65  66  67
Auteur Sujet :

Model View Controller (MVC) - Architecture des applications PHP

n°1522648
FlorentG
Posté le 02-03-2007 à 09:11:08  profilanswer
 

Reprise du message précédent :
Ca y est, nouvelle version de solar. Ils ont eu l'idée de déterminer le format de la view à partir de l'extension de l'url.... Ca fait 6 mois que c'est implémenté dans mon truc, ch'uis trop fort [:dawak]

mood
Publicité
Posté le 02-03-2007 à 09:11:08  profilanswer
 

n°1523126
supermofo
Hello World !
Posté le 02-03-2007 à 21:55:14  profilanswer
 

J vois pas l'interet de decouvrir le format de view au lieu de la forcer

n°1523300
gizmo
Posté le 03-03-2007 à 20:25:01  profilanswer
 

avoir des url faciles a retenir, genre www.monsite.com/page.html et www.monsite.com/page.pdf, ce qui est plus transparant pour l'utilisateur.

n°1523312
supermofo
Hello World !
Posté le 03-03-2007 à 21:13:23  profilanswer
 

FlorentG a écrit :

Ca y est, nouvelle version de solar. Ils ont eu l'idée de déterminer le format de la view à partir de l'extension de l'url.... Ca fait 6 mois que c'est implémenté dans mon truc, ch'uis trop fort  [:dawak]


Tin mais le gars de solar avait une DP fever. Qu'est ce tu vx adapter en HTTP !!

 

n°1523367
jukieng
Posté le 04-03-2007 à 10:49:46  profilanswer
 
n°1524049
FlorentG
Posté le 05-03-2007 à 18:58:52  profilanswer
 

gizmo a écrit :

avoir des url faciles a retenir, genre www.monsite.com/page.html et www.monsite.com/page.pdf, ce qui est plus transparant pour l'utilisateur.


Ouh yeah. Là j'ai fait un module diaporama, tu peux appeller le truc de différentes manières :

Code :
  1. http://pouet.com/truc/diapo/image01.jpg.html


Version XHTML normale

Code :
  1. http://pouet.com/truc/diapo/image01.jpg.xhtml


Version servie en application/xhtml+xml + prologue xml, parfait pour remplacer tout un bloc via DOM + ajax

Code :
  1. http://pouet.com/truc/diapo/image01.jpg.xml


Xml pur (balises spéciales, utile pour l'ajax)

Code :
  1. http://pouet.com/truc/diapo.js


Génère un script qui gère le diapo.
 
 
Du coup côté implémentation, je fais dans une page un lien vers le diaporama. Le diapo s'ouvre dans une nouvelle page, affiche l'image courante + boutons suivants précédents. Dans la première page, j'appelle le script qui remplace le lien par le diaporama lui-même (via la version xhtml), et greffe des events sur les liens pour récupérer une nouvelle image à partir du XML [:dawak] Graceful degradation at its best : ceux sans JS verront un lien, ceux avec auront le diaporama directement. Si j'ai le temps j'uploaderais un exemple

n°1526503
supermofo
Hello World !
Posté le 09-03-2007 à 16:04:32  profilanswer
 

gizmo a écrit :

avoir des url faciles a retenir, genre www.monsite.com/page.html et www.monsite.com/page.pdf, ce qui est plus transparant pour l'utilisateur.


Jusqu'a preuve du contraire l'utilisateur trouve une ressource >>> manipule ressource.

 

D'ailleur donner a l'utilisateur du controle sur l'application via le controle URL me parait irrealiste.

 

Faudrait ptetre eviter de mettre les utilisateurs a sont niveau ;)

n°1526508
nORKy
Grmmph...
Posté le 09-03-2007 à 16:14:20  profilanswer
 

supermofo, tu veux que en gros lorsqu'un utilisateur va sur un site, il click et se fou des urls, c'est ca ? car , je comprends pas ce que tu entends par ressouce.
 
mais si c'est ca, je suis d'accord. perso, je me fous de la tête de l'url, car souvent, on tape le nom de domaine et rien de +

n°1526697
supermofo
Hello World !
Posté le 10-03-2007 à 06:26:29  profilanswer
 

Ouais on clique sur des liens bien visible et si possible organises de maniere intuitive.

 

Anecdote:

 

X arrive de google sur un site  avec mot cle : biggest dog
1min apres
Le meme X revient sur le meme site avec mot cle : big dog
Et encore une fois avec mot cle : picture big dog

 

Tout ceci en repassant a chaque fois par google  :lol:


Message édité par supermofo le 10-03-2007 à 06:41:47
n°1535584
FlorentG
Posté le 29-03-2007 à 09:29:07  profilanswer
 

supermofo a écrit :

D'ailleur donner a l'utilisateur du controle sur l'application via le controle URL me parait irrealiste.


C'est pourtant constamment le cas... Si moi j'utilise l'extension pour définir le format généré, d'autres utiliseront un paramètre...

mood
Publicité
Posté le 29-03-2007 à 09:29:07  profilanswer
 

n°1536007
supermofo
Hello World !
Posté le 29-03-2007 à 17:44:31  profilanswer
 

Par utilisateur j'entend "user" c est a dire le gars qui arrive sur le site, qui fait ces clics et puis s'en va.
 
En parlant de parametre URL tu me conseilles quoi entre :
 
- chaque module definit ses parametres ( style fichier config )
- une factory d objet parametres
- gerer ca a plus haut niveau ( dans le front par exemple )
 

n°1536877
FlorentG
Posté le 01-04-2007 à 11:30:48  profilanswer
 

Moi chaque controller définit ses paramètres dans la fonction correspondante à la méthode HTTP :

Code :
  1. class module_diaporama_controller_index extends MFW_Controller {
  2.   public function get($image) {
  3.     ...
  4.   }
  5. }


Et le paramètre est repris de l'url. On peut mettre plein de paramètre, faudra les passer séparés par des /. mod_rewrite pour zéro dollars

n°1536884
masklinn
í dag viðrar vel til loftárása
Posté le 01-04-2007 à 11:48:53  profilanswer
 

FlorentG a écrit :

Moi chaque controller définit ses paramètres dans la fonction correspondante à la méthode HTTP :

Code :
  1. class module_diaporama_controller_index extends MFW_Controller {
  2.   public function get($image) {
  3.     ...
  4.   }
  5. }


Et le paramètre est repris de l'url. On peut mettre plein de paramètre, faudra les passer séparés par des /. mod_rewrite pour zéro dollars


C'est marrant, on dirait web.py mais en moche [:dawa]
 
edit: histoire de montrer de quoi je parle, quand même, le "contrôlleur" d'une application web.py ressemble à ça:
 

Code :
  1. import web
  2.  
  3. urls = (
  4.    '/', 'index',
  5.    '/add', 'add',
  6.    '/delete', 'delete',
  7.    '/update', 'update'
  8. )
  9.  
  10. render = web.template.render('templates/')
  11.  
  12. class index:
  13.    def GET(self):
  14.        todos = web.select('todo')
  15.        print render.index(todos)
  16.  
  17. class add:
  18.    def POST(self):
  19.        i = web.input()
  20.        if i.title.strip():
  21.            n = web.insert('todo', title=i.title)
  22.            web.seeother('/#t'+str(n))
  23.        else:
  24.            web.seeother('/')
  25.  
  26. class delete:
  27.    def POST(self):
  28.        i = web.input()
  29.        web.delete('todo', int(i.id))
  30.        web.seeother('/')
  31.  
  32. class update:
  33.    def POST(self):
  34.        i = web.input()
  35.        if i.content.strip():
  36.            web.update('todo', int(i.id), title=i.content)
  37.            print i.content
  38.        else:
  39.            print web.select('todo', where=("id=%d" % int(i.id)))[0].title
  40.  
  41. if __name__ == "__main__":
  42.    web.run(urls, globals(), web.reloader)


Message édité par masklinn le 01-04-2007 à 12:17:28

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1537032
Shinuza
This is unexecpected
Posté le 01-04-2007 à 22:27:07  profilanswer
 

Ah ouais quand même  [:pingouino]

 

J'ai l'impression de voir un de mes controlleurs Ruby

 
Spoiler :

En légèrement plus verbeux  :kaola:  

 

Sinon, je commence à m'intéresser au MVC de près, seulement j'ai commencé prendre le problème dans l'autre sens.
En effet, je ne peux pas imposer le MVC (fait maison ou basé sur un framework quelconque) d'un coup au boulot...

 

Donc j'ai commencé par bosser sur des helpers, déja j'ai un peu simplifié l'interface PHP/SGBD (malheuresement la prod est en PHP4),ensuite je vais ajouter des méthodes style update(), save(), find(), ect...

 

J'ai une classe form (extension future de la classe html, ou faut-il tout mettre dans la classe html?), dont je me sert pour les backoffice, afin de minimiser les temps de prod. C'est à mon avis aussi à inclure dans la structure MVC, mais ça soulève un autre problème (voir 1)

 

Je pense bosser sous phpontrax, ça m'a l'air pas mal du tout, j'aime bien la syntaxe ruby like.
(1) CakePhp est pas mal aussi, mais j'aimerais bien savoir à quel degré on doit séparer les couches, parce que la contrairement à POT, ils utilisent une classe qui sort du html, et forcément, il on du code php directemet dans la vue.
 


Message édité par Shinuza le 01-04-2007 à 22:58:14

---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1537038
leflos5
On est ou on est pas :)
Posté le 01-04-2007 à 22:38:01  profilanswer
 

FlorentG a écrit :

Moi chaque controller définit ses paramètres dans la fonction correspondante à la méthode HTTP :

Code :
  1. class module_diaporama_controller_index extends MFW_Controller {
  2.   public function get($image) {
  3.     ...
  4.   }
  5. }


Et le paramètre est repris de l'url. On peut mettre plein de paramètre, faudra les passer séparés par des /. mod_rewrite pour zéro dollars


Donc c'est UN controleur qui tape dans les variables du serveur web :??: Bien pour l'indépendance de l'appli et le point d'entrée unique :whistle:

n°1537098
supermofo
Hello World !
Posté le 02-04-2007 à 09:13:17  profilanswer
 

> leflos5 : tu en connais d autres des points d entree en HTTP ? Dans tous les cas a un moment ou a un autre tu dois recuperer ces variables serveur. Le tout est d encapsuler  une bonne fois pour toute, et la solution repond a ce critere. Apres je dis pas, faut voir ce qu il se passe dans les autres parties.

 

J'ai vu un truc pas mal sinon tire d'ajax mais ca me parait overcomplicated pour un framework model2. ( Stroboscope Web )
Vu les limitations de javascript les gars trouvent trouvent de jolies solutions assez souvent.

 

Si j etais motive j'aurais fais un observer:

Code :
  1. abstract class Control{ //ou une public avec methode helper
  2. ...
  3. function registerControl(){}
  4. }
  5. class ControlGet extends Control{}
  6. class ControlPost extends Control{}
  7. class ControlCookie extends Control{}
  8. class ControlSession extends Control{}
  9. ....
 

Mais comme je suis une grosse feignasse je fais:

Code :
  1. class Module{
  2. $controls = array ( 'C1' => 'type', ' C2 => 'type2');
  3. $controls = array_merge($controls,$_GET);
  4. }
 

Les taches des modules sont clairement definies dans leur classe donc pas la peine qu' ils aillent decouvrir ce qu il doivent faire.

 

Par contre comment faire pour que Control ne se ballade pas partout dans le model ? Beaucoup de logique dans le controller, des chips ?

   


Message édité par supermofo le 02-04-2007 à 10:09:40
n°1537149
masklinn
í dag viðrar vel til loftárása
Posté le 02-04-2007 à 10:41:00  profilanswer
 

leflos5 a écrit :

Donc c'est UN controleur qui tape dans les variables du serveur web :??: Bien pour l'indépendance de l'appli et le point d'entrée unique :whistle:


Le point d'entrée unique est justement le contrôlleur qui sert d'interface entre le serveur web et l'application, couillon [:petrus75]


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1537177
_synapse_
Posté le 02-04-2007 à 11:01:20  profilanswer
 

Comme quoi personne ne comprends rien au mvc et tout les termes à la noix qui vont avec :o
 
On croirait entendre un discours de ssii, tma, mao,... :o

n°1537179
supermofo
Hello World !
Posté le 02-04-2007 à 11:08:42  profilanswer
 

En meme temps on a pas besoin d'etre serieux ( a la limite je trouve ta remarque vachement deplacee ).


Message édité par supermofo le 02-04-2007 à 11:13:51
n°1537439
Djebel1
Nul professionnel
Posté le 02-04-2007 à 16:39:01  profilanswer
 

Tiens j'ai des questions existentielles sur le MVC :  
 
- pour la partie Controller, j'utilise un FrontController avec des Page Controller. Mais comment scinder les actions de ces Page Controller : un pour chaque page ? un pour chaque domain logic (genre un page controller pour tout ce qui touche les utilisateurs, etc, ...) ? Autre ?
 
 
- Souvent pour l'affichage d'une page, y a plusieurs actions à lancer sur le modèle (par exemple, pour la page d'accueil d'un forum on pourrait vouloir afficher la liste des derniers threads, et la liste des utilisateurs, 2 actions bien distinctes sur le Model). Il me semble que ce n'est pas au controller de faire cet "assemblage" (par exemple récupérer du Model une liste de threads, une liste de users, et balancer les 2 listes à la vue) : ça ferait du controller un médiateur, et surtout ça serait vite le bronx.
 
Alors que faire ? Ne faudrait-il pas créer une classe qui gère ces actions composites (par exemple une classe Forum. Le controller lance une unique action sur un objet Forum, qui récupère la liste de threads et la liste de users. Puis le controller balance l'objet Forum à la vue). Mais ça implique de devoir créer une classe de plus "haut niveau" à chaque fois qu'on a besoin de plusieurs actions sur des classes "bas niveau". Ca vous semble censé ?
 
 
- La vue : ne doit-on pas impliqué à la vue les mêmes principes ? Par exemple, une classe User_View qui gêre d'afficher des liste d'utilisateurs de 50 manières, d'afficher les infos sur un utilisateur, etc, ... une classe Thread_View qui gêre d'afficher des listes de threads de 50 manières. Et au final, une classe Forum_View qui gêre d'instancier un objet User_View, un objet Thread_View, et qui les utilise pour afficher la page d'accueil.
 
 
So ?
 
(l'exemple est bidon hein, juste histoire d'illustrer mes propos peut-être tout aussi bidons)

n°1537442
skeye
Posté le 02-04-2007 à 16:44:41  profilanswer
 

Je dirais bof. Tu fais de ton controleur et de ta vue des miroirs de ton modèle, en faisant ça...c'est l'inverse du but recherché.

 

La vue doit avoir une architecture en relation avec les problématiques propres à la vue, quel que soit le modèle derriére...idem pour le controleur.:o

 

[edit]

 

Après si ça a un sens, ça peut rester assez proche, mais faut pas que ce soit sytématique, quoi...:o


Message édité par skeye le 02-04-2007 à 16:45:57

---------------
Can't buy what I want because it's free -
n°1537456
Djebel1
Nul professionnel
Posté le 02-04-2007 à 17:11:02  profilanswer
 

Tu pourrais montrer comment gêrer ce genre de cas selon toi stp ? J'ai vraiment du mal sur l'organisation du controller et de la vue.

n°1537462
supermofo
Hello World !
Posté le 02-04-2007 à 17:36:27  profilanswer
 

EDIT DE OUF ...


Message édité par supermofo le 03-04-2007 à 11:28:45
n°1537497
masklinn
í dag viðrar vel til loftárása
Posté le 02-04-2007 à 18:45:52  profilanswer
 

Indentation bordel :o


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1537499
gizmo
Posté le 02-04-2007 à 18:50:29  profilanswer
 

masklinn a écrit :

Indentation bordel :o


OSEF, on est pas en python :o
 
 
 [:dehors2]

n°1537500
masklinn
í dag viðrar vel til loftárása
Posté le 02-04-2007 à 18:51:34  profilanswer
 

gizmo a écrit :

OSEF, on est pas en python :o
 
 
 [:dehors2]


Justement, le PHP c'est déja moche indenté alors sans indentation c'est cauchemardesque :o


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1537527
supermofo
Hello World !
Posté le 02-04-2007 à 20:27:38  profilanswer
 

J y peut rien moi, faut voir ca avec le soft du forum

n°1537545
masklinn
í dag viðrar vel til loftárása
Posté le 02-04-2007 à 21:36:57  profilanswer
 

supermofo a écrit :

J y peut rien moi, faut voir ca avec le soft du forum


Le soft du forum fonctionne très bien, prière d'arrêter de se chercher des excuses [:klem3i1]


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1537655
Djebel1
Nul professionnel
Posté le 03-04-2007 à 10:52:01  profilanswer
 

Djebel1 a écrit :

Tiens j'ai des questions existentielles sur le MVC :  
 
- pour la partie Controller, j'utilise un FrontController avec des Page Controller. Mais comment scinder les actions de ces Page Controller : un pour chaque page ? un pour chaque domain logic (genre un page controller pour tout ce qui touche les utilisateurs, etc, ...) ? Autre ?
 
 
- Souvent pour l'affichage d'une page, y a plusieurs actions à lancer sur le modèle (par exemple, pour la page d'accueil d'un forum on pourrait vouloir afficher la liste des derniers threads, et la liste des utilisateurs, 2 actions bien distinctes sur le Model). Il me semble que ce n'est pas au controller de faire cet "assemblage" (par exemple récupérer du Model une liste de threads, une liste de users, et balancer les 2 listes à la vue) : ça ferait du controller un médiateur, et surtout ça serait vite le bronx.
 
Alors que faire ? Ne faudrait-il pas créer une classe qui gère ces actions composites (par exemple une classe Forum. Le controller lance une unique action sur un objet Forum, qui récupère la liste de threads et la liste de users. Puis le controller balance l'objet Forum à la vue). Mais ça implique de devoir créer une classe de plus "haut niveau" à chaque fois qu'on a besoin de plusieurs actions sur des classes "bas niveau". Ca vous semble censé ?
 
 
- La vue : ne doit-on pas impliqué à la vue les mêmes principes ? Par exemple, une classe User_View qui gêre d'afficher des liste d'utilisateurs de 50 manières, d'afficher les infos sur un utilisateur, etc, ... une classe Thread_View qui gêre d'afficher des listes de threads de 50 manières. Et au final, une classe Forum_View qui gêre d'instancier un objet User_View, un objet Thread_View, et qui les utilise pour afficher la page d'accueil.
 
 
So ?
 
(l'exemple est bidon hein, juste histoire d'illustrer mes propos peut-être tout aussi bidons)


 

Djebel1 a écrit :

Tu pourrais montrer comment gêrer ce genre de cas selon toi stp ? J'ai vraiment du mal sur l'organisation du controller et de la vue.


Skeye ? FlorentG ? :D

n°1537975
skeye
Posté le 03-04-2007 à 16:49:33  profilanswer
 

flemme de répondre point par point...[:joce]
 
Dans mon bouzin (loin d'être parfait,hein...je ne te présente qu'une vision des choses, pas la vérité absolue), le contrôleur et la vue sont très très light.  
 
La couche contrôleur peut au final être vue comme une sorte de fonction main(). Tu lis l'input, et tu instancies le modèle et la vue en fonction de ce que tu as lu...c'est très procédural, comme approche, finalement.  
Et donc pour reprendre ton exemple, pour moi, c'est bien le rôle du contrôleur d'aller chercher dans le modèle la liste des users et de la passer à la vue si elle en a besoin...si ce n'est pas lui, alors qui va la lui donner?
 
Ensuite, la vue, dans mon machin, on peut presque la réduire à smarty, pour l'affichage html...le controleur lui file les données, et elle connait le(s) template(s) à instancier...partant de là elle n'a plus grand chose à faire...


---------------
Can't buy what I want because it's free -
n°1538095
Djebel1
Nul professionnel
Posté le 03-04-2007 à 19:56:46  profilanswer
 

skeye a écrit :


Et donc pour reprendre ton exemple, pour moi, c'est bien le rôle du contrôleur d'aller chercher dans le modèle la liste des users et de la passer à la vue si elle en a besoin...si ce n'est pas lui, alors qui va la lui donner?


Ha ouais non mais ça on bien d'accord hein ^^
 
Ma question c'est plutôt : quand on a plusieurs actions à lancer sur le Model, est-ce que c'est le Controller qui va lancer ces différentes actions, et passer donc plusieurs paramètres à la Vue. Ca me semble tout nase ça.
 
Je me disais donc qu'il valait mieux créer une classe du Model, qui lancerait ces différentes actions. Le Controller n'aurait ainsi que une action à lancer sur le Model, et un seul paramètre à passer à la View.
Pour moi, ça fait sens même conceptuellement. Dans mon exemple tout bidon, un forum c'est bien des posts et des users, pas de problème à créer une classe qui s'occupe de lister les posts et les users.
 
Mais y a plein de fois où c'est plus tordu de trouver un lien conceptuel. Bref, là question :  
Le controller lance plusieurs actions pour une page, ou il faut faire intervenir une classe du Model de niveau supérieur ?
 
 
(Mon idée c'est donc qu'il y a des classes de "base" dans le Model, très corrects d'un point de vue conceptuel, et des classes à un niveau "supérieur", toujours indépendantes du Controller et de la Vue, mais un peu plus adaptées à eux.)

n°1538136
nycius
Ich liebe dich !
Posté le 03-04-2007 à 22:08:39  profilanswer
 

A quand un tuto documenté pour illustrer tout ca avec des exemples concrets ? parce que la c'est le flou total  :D  :whistle:

n°1538183
skeye
Posté le 04-04-2007 à 07:39:21  profilanswer
 

Djebel1 a écrit :

Ma question c'est plutôt : quand on a plusieurs actions à lancer sur le Model, est-ce que c'est le Controller qui va lancer ces différentes actions, et passer donc plusieurs paramètres à la Vue. Ca me semble tout nase ça.
 
Je me disais donc qu'il valait mieux créer une classe du Model, qui lancerait ces différentes actions. Le Controller n'aurait ainsi que une action à lancer sur le Model, et un seul paramètre à passer à la View.


 
Ah non. Ca revient à faire ton modèle en fonction de la vue, ça.[:dawao]
Tu déportes le controleur dans ton modèle, là...
 

Djebel1 a écrit :

Pour moi, ça fait sens même conceptuellement. Dans mon exemple tout bidon, un forum c'est bien des posts et des users, pas de problème à créer une classe qui s'occupe de lister les posts et les users.
 
Mais y a plein de fois où c'est plus tordu de trouver un lien conceptuel. Bref, là question :  
Le controller lance plusieurs actions pour une page, ou il faut faire intervenir une classe du Model de niveau supérieur ?


 
Le controleur instancie autant d'objets du model qu'il en faut pour alimenter la vue.:o
Par contre pour reprendre ton exemple, le listage des utilisateurs ça peut être une fonction statique de la classe user, qui retourne une liste d'users...ça me gêne absolument pas qu'une classe user dispose d'une fonction retournant une liste d'users...:D
 

Djebel1 a écrit :

(Mon idée c'est donc qu'il y a des classes de "base" dans le Model, très corrects d'un point de vue conceptuel, et des classes à un niveau "supérieur", toujours indépendantes du Controller et de la Vue, mais un peu plus adaptées à eux.)


 
Dans ce que tu postes, je ne vois pas le "indépendantes du controleur et de la vue"...[:joce]


---------------
Can't buy what I want because it's free -
n°1538313
Djebel1
Nul professionnel
Posté le 04-04-2007 à 11:31:20  profilanswer
 

Oki merci pour les réponses, je faisais comme toi avant mais ça me semblait nase ^^
 
Et au sujet de la Vue :  
toujours dans ce même ordre d'esprit, en reprenant l'exemple du listing  des users et des posts d'un forum, ça te paraît correct ça ?
- une classe Display_User qui sait afficher une liste de users de 50 manières.
- une classe Display_Post qui sait afficher une liste de posts de 50 manières.
- une classe Display_Forum, qui utilise les 2 classes précédentes pour afficher un résumé du forum.
 
Ca serait toujours dans l'esprit d'avoir des classes de "base" qui font des choses de "base", et des classes au dessus qui savent les assembler pour obtenir les pages.
 
Ou tu penses aussi que c'est au Controller d'assembler différentes vue pour générer la page ?
 
 
(sinon, pour une fonction statique de la classe User retournant une liste de users ... moi ça me gêne. Un objet User, ça représente un et un seul user. Pourquoi cet user irait-il connaître les autres ? Ca me semble un peu bancal ^^)

Message cité 1 fois
Message édité par Djebel1 le 04-04-2007 à 11:34:55
n°1538369
skeye
Posté le 04-04-2007 à 13:14:22  profilanswer
 

Djebel1 a écrit :

Oki merci pour les réponses, je faisais comme toi avant mais ça me semblait nase ^^
 
Et au sujet de la Vue :  
toujours dans ce même ordre d'esprit, en reprenant l'exemple du listing  des users et des posts d'un forum, ça te paraît correct ça ?
- une classe Display_User qui sait afficher une liste de users de 50 manières.
- une classe Display_Post qui sait afficher une liste de posts de 50 manières.
- une classe Display_Forum, qui utilise les 2 classes précédentes pour afficher un résumé du forum.
 
Ca serait toujours dans l'esprit d'avoir des classes de "base" qui font des choses de "base", et des classes au dessus qui savent les assembler pour obtenir les pages.
 
Ou tu penses aussi que c'est au Controller d'assembler différentes vue pour générer la page ?


 
Je pense que le soucis qu'on a c'est que tu vois le controleur comme un gros bloc avec un seul point d'entrée vers le modèle, et un seul point d'entrée vers la vue, et moi non.
Pour ton cas, je verrais plutôt un truc dans ce genre, au niveau du controleur :
1) La classe "principale" analyse la requête, et instancie...
2) ...des classes du controleur "spécialisées", en fonction de la requête.
Une de ces classes va aller instancier ce qu'il faut dans le modèle pour récupérer la liste des utilisateurs, et instanciera la classe d'affichage correspondante.
3) C'est gagné...la classe "principale" n'a plus qu'à demander aux classes "spécialisées" de lancer l'affichage...
 
Partant de là, ton Display_forum n'a plus lieu d'être...et c'est bien uniquement le controleur qui sait que pour afficher le forum il faut afficher à la fois les users et les posts, comme prévu.
Tu noteras que cela ne correspond pas du tout à mon archi perso, qui est un peu (voire très) batarde.
 

Djebel1 a écrit :

(sinon, pour une fonction statique de la classe User retournant une liste de users ... moi ça me gêne. Un objet User, ça représente un et un seul user. Pourquoi cet user irait-il connaître les autres ? Ca me semble un peu bancal ^^)


 
M'enfin ça sert à quoi d'après toi les méthodes statiques?[:pingouino]


---------------
Can't buy what I want because it's free -
n°1538437
Djebel1
Nul professionnel
Posté le 04-04-2007 à 15:18:53  profilanswer
 

Oki merci, bon bah c'est ce que je faisais mais je me demandais si c'était bien le rôle du controller. Mais c'est vrai que tes arguments se tiennent, et qu'on a ainsi une réusabilité maximale de la vue et du model.
 
 
Les méthodes statiques à mon sens c'est surtout utile pour certains design pattern (genre singleton), et pour des méthodes qui doivent pouvoir être utilisées de n'importe où dans l'appli.
 
Je me répète mais je vois pas pourquoi une classe user devrait connaître les autres users :
Si on a une appli de vente de voitures, ce n'est pas à une classe Voiture de connaître l'état des stocks des voitures ... c'est le boulot d'une classe Stock.
Pour un journal en ligne, ce n'est pas à une classe Article de connaître la liste de tous les articles, mais bien à une classe Journal.
 
'fin bon ce n'est que mon avis de noob, si tu as des trucs pour me montrer que j'ai tout faux je suis preneur :)

Message cité 1 fois
Message édité par Djebel1 le 04-04-2007 à 15:19:37
n°1538441
skeye
Posté le 04-04-2007 à 15:28:21  profilanswer
 

Djebel1 a écrit :

Je me répète mais je vois pas pourquoi une classe user devrait connaître les autres users


Ca ne veut rien dire, ça.[:pingouino]
C'est une méthode statique, tu ne l'utilises pas avec une instance de ton objet, mais avec l'objet lui-même.[:pingouino]

 

[edit]

 

Pour reprendre ton exemple, ce sont des infos sur les voitures, qu'il lui faut, quand même, à ta classe stock...elle va faire comment, pour les obtenir, elle va demander elle-même à la base de données ou à la classe qui gère les accès aux données? Ou alors elle demande poliment à la classe Voiture de bien vouloir lui fournir les infos qui la concernent?

Message cité 3 fois
Message édité par skeye le 04-04-2007 à 15:36:33

---------------
Can't buy what I want because it's free -
n°1538447
Djebel1
Nul professionnel
Posté le 04-04-2007 à 15:35:46  profilanswer
 

skeye a écrit :

Ca ne veut rien dire, ça.[:pingouino]


bah, ça veut rien dire ça ?  

Citation :

Ce n'est pas à une classe Voiture de connaître l'état des stocks de voitures ... c'est le boulot d'une classe Stock.


Il me semble que c'est un argument conceptuel valable. Mais je serai heureux d'avoir les tiens : qu'est-ce qui justifie d'après toi qu'une voiture puisse gérer un stock ? Pourquoi ne serait-il pas plus approprié de créer une classe Stock ?  
 
Et si tu as des liens expliquant pourquoi il est mieux de rajouter à une classe Voiture une méthode statique gérant le stock (ou autre exemple), je suis preneur :)
 
J'ai pas la science infuse hein, mais c'est sur ce mêne forum qu'on m'avait expliqué ce que je suis en train de raconter.


Message édité par Djebel1 le 04-04-2007 à 15:37:19
n°1538448
skeye
Posté le 04-04-2007 à 15:37:28  profilanswer
 

cf mon edit.
La classe voiture ne gère pas les stocks, elle fournit les informations qui concernent les voitures.


---------------
Can't buy what I want because it's free -
n°1538450
Djebel1
Nul professionnel
Posté le 04-04-2007 à 15:39:10  profilanswer
 

skeye a écrit :


Pour reprendre ton exemple, ce sont des infos sur les voitures, qu'il lui faut, quand même, à ta classe stock...elle va faire comment, pour les obtenir, elle va demander elle-même à la base de données ou à la classe qui gère les accès aux données?


Bah oui, la classe Stock va interroger la classe qui gère les accès aux données, qui va lui retourner une collection d'objets voiture. Qu'est-ce qui n'est pas valable là-dedans ?

Message cité 1 fois
Message édité par Djebel1 le 04-04-2007 à 15:39:43
n°1538451
skeye
Posté le 04-04-2007 à 15:39:16  profilanswer
 

Dans la pratique, ton instance de Stock va être initialisée en faisant appel à la méthode statique de la classe Voiture, et à-partir de là elle fait sa tambouille toute seule.
Mais à-partir du moment où elle lit ou met à jour des infos concernant des voitures, elle doit passer par la classe Voiture.


---------------
Can't buy what I want because it's free -
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  17  18  19  ..  62  63  64  65  66  67

Aller à :
Ajouter une réponse
 

Sujets relatifs
Comment créer une architecture propre et fonctionelle...[Débutant] Webdesigner a besoin d'aide pour PHP
script PHP style explorateur windowsPHP et MS SQL
[PHP] envoi d'images qui se dimentionne et s'ajoute direct sur 1pageAfficher le temps utilisé pour générer une page PHP
[PHP] connexion bdd différente selon page locale ou sur serveur ?Afficher une image générée par un script PHP dans un PDF ?
Utilisation d'une variable en Flash depuis PHPErreur de forum PHP
Plus de sujets relatifs à : Model View Controller (MVC) - Architecture des applications PHP


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)