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

 


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

Model View Controller (MVC) - Architecture des applications PHP

n°2072626
skeye
Posté le 29-04-2011 à 13:47:08  profilanswer
 

Reprise du message précédent :

MEI a écrit :


Alors si ça te fait plaisir au lieu de l’appeler "Service_Netvibes" tu l’appelleras "Model_Service_Netvibes", mais ça reviendra juste un peu au même... :spamafote:
 
Autre solution, simplement le mettre dans sa Library si c'est très générique et réutilisable.


 
Model et Netvibes dans le même nom de classe, ça sent la séparation des couches de qualité.[:dawak]


---------------
Can't buy what I want because it's free -
mood
Publicité
Posté le 29-04-2011 à 13:47:08  profilanswer
 

n°2072629
MEI
|DarthPingoo(tm)|
Posté le 29-04-2011 à 13:49:02  profilanswer
 

skeye a écrit :


Tu y tiens, à ta couche service qui existe pas, toi, hein...[:el g]


Elle n'existe tellement pas qu'elle est fortement recommandée par Matthew Weier O'Phinney.


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
n°2072631
skeye
Posté le 29-04-2011 à 13:50:33  profilanswer
 

MEI a écrit :


Elle n'existe tellement pas qu'elle est fortement recommandée par Matthew Weier O'Phinney.


ça me fait une belle jambe. Ici on parle de MVC, pas de Zend.


---------------
Can't buy what I want because it's free -
n°2072632
koskoz
They see me trollin they hatin
Posté le 29-04-2011 à 13:50:52  profilanswer
 

MEI a écrit :


Elle n'existe tellement pas qu'elle est fortement recommandée par Matthew Weier O'Phinney.

 

Parle-t-on encore de MVC dans ce cas ? :o

 

edit : :fou:


Message édité par koskoz le 29-04-2011 à 13:51:04

---------------
Twitter
n°2072636
koskoz
They see me trollin they hatin
Posté le 29-04-2011 à 13:52:20  profilanswer
 

Et je balance pas le XML à un WS au fait, l'user doit lui même enregistrer le XML et l'importer dans iGoogle [:dawak]


---------------
Twitter
n°2072640
MEI
|DarthPingoo(tm)|
Posté le 29-04-2011 à 13:56:49  profilanswer
 

koskoz a écrit :

Et je balance pas le XML à un WS au fait, l'user doit lui même enregistrer le XML et l'importer dans iGoogle [:dawak]


Si c'est de la sérialisation c'est dans ton modèle que tu ajoute une méthode qui fait la sérialisation.
 
Et le contrôleur utilisera ces méthodes.


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
n°2072643
skeye
Posté le 29-04-2011 à 13:58:52  profilanswer
 

MEI a écrit :


Si c'est de la sérialisation c'est dans ton modèle que tu ajoute une méthode qui fait la sérialisation.
 
Et le contrôleur utilisera ces méthodes.


Non mais tu lis ce qu'il écrit? Le produit final que l'utilisateur de son machin va VOIR c'est le xml. Générer le xml en question à-partir des données, c'est le boulot de la VUE.


---------------
Can't buy what I want because it's free -
n°2072644
FlorentG
Posté le 29-04-2011 à 13:59:28  profilanswer
 

koskoz a écrit :

Et je balance pas le XML à un WS au fait, l'user doit lui même enregistrer le XML et l'importer dans iGoogle [:dawak]


Ahhh, alors c'est la view ça :D
 
edit:  [:benou_grilled]


Message édité par FlorentG le 29-04-2011 à 14:00:05
n°2072647
koskoz
They see me trollin they hatin
Posté le 29-04-2011 à 14:00:51  profilanswer
 

Vous êtes en train de dire que je fou tout le code ci-dessous dans ma vue ? :heink:

 
Code :
  1. public static void generateXML(Long projectId) {
  2.     // Getting all the modules related to the project
  3.     models.Project project = models.Project.find("byId", projectId).first();
  4.     JPAQuery query = project.find("SELECT modules FROM Project" );        
  5.     List<models.Module> modules = query.fetch();
  6.     
  7.     // generating the iGoogle XML file
  8.     try {
  9.         // creating the document
  10.         DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance();
  11.         DocumentBuilder docBuilder = dbfac.newDocumentBuilder();
  12.         Document doc = docBuilder.newDocument();
  13.  
  14.         //Creating the XML tree
  15.  
  16.         //create the root element and add it to the document
  17.         Element root = doc.createElement("GadgetTabML" );
  18.         root.setAttribute("version", "1.0" );
  19.         doc.appendChild(root);
  20.  
  21.         //create child element, add an attribute, and add to root
  22.         Element tab = doc.createElement("Tab" );
  23.         tab.setAttribute("title", project.name);
  24.         root.appendChild(tab);
  25.         
  26.         // and so on
  27.         Element layout = doc.createElement("Layout" );
  28.         layout.setAttribute("spec", "THREE_COL_LAYOUT_1" );
  29.         tab.appendChild(layout);
  30.  
  31.         Element section = doc.createElement("Section" );
  32.         tab.appendChild(section);
  33.         
  34.         Element module, userPref, modulePrefs;
  35.         // iterate over all the modules
  36.         for (models.Module m : modules) {
  37.              module = doc.createElement("Module" );
  38.              module.setAttribute("type", "RSS" );
  39.              section.appendChild(module);
  40.             
  41.              userPref = doc.createElement("UserPref" );
  42.              userPref.setAttribute("name", "numItems" );
  43.              userPref.setAttribute("value", "3" );
  44.              module.appendChild(userPref);
  45.             
  46.              // TODO only works if the module has an URL field atm
  47.              Class c = m.getClass();
  48.              Field url = c.getField("url" );
  49.             
  50.              modulePrefs = doc.createElement("ModulePrefs" );
  51.              modulePrefs.setAttribute("xmlUrl", url.get(m).toString());
  52.              module.appendChild(modulePrefs);
  53.         }
  54.         
  55.         // generating the XML
  56.         renderXml(doc);
  57.  
  58.     } catch (Exception e) {
  59.         System.out.println(e);
  60.     }
  61. }

Message cité 3 fois
Message édité par koskoz le 29-04-2011 à 14:01:40

---------------
Twitter
n°2072649
flo850
moi je
Posté le 29-04-2011 à 14:02:29  profilanswer
 


oui, a part le select au début qui doit etre dans un modèle ( Module::findAll() par exemple)

Message cité 1 fois
Message édité par flo850 le 29-04-2011 à 14:03:30

---------------

mood
Publicité
Posté le 29-04-2011 à 14:02:29  profilanswer
 

n°2072650
FlorentG
Posté le 29-04-2011 à 14:02:34  profilanswer
 

koskoz a écrit :

Vous êtes en train de dire que je fou tout le code ci-dessous dans ma vue ? :heink:


Pourquoi pas ?
 
MVC n'indique pas comment est générée la View. Ça peut être des templates, ou comme dans ton cas l'utilisation d'une API spécifique.

n°2072654
skeye
Posté le 29-04-2011 à 14:03:44  profilanswer
 

koskoz a écrit :

Vous êtes en train de dire que je fou tout le code ci-dessous dans ma vue ? :heink:

 

Je crains fort que ce bout de code ne puisse pas être entièrement dans une seule couche...je vois au moins  un bout de modèle (une requête SQL) et un bout de vue (la création du document attendu en sortie à-partir des données).


Message édité par skeye le 29-04-2011 à 14:04:05

---------------
Can't buy what I want because it's free -
n°2072657
MEI
|DarthPingoo(tm)|
Posté le 29-04-2011 à 14:04:57  profilanswer
 

skeye a écrit :


Non mais tu lis ce qu'il écrit? Le produit final que l'utilisateur de son machin va VOIR c'est le xml. Générer le xml en question à-partir des données, c'est le boulot de la VUE.


:non: La vue sont boulot c'est de présenter ça.
Parce que si un jour tu veux présenter ça dans une autre vue, par exemple destiné a une version mobile du site, tu ne va pas dupliquer le code de génération du XML. :spamafote:
 

Code :
  1. class Model_Twitter {
  2.     // ...
  3.     public function toNetVibesXML() {
  4.         // ...
  5.     }
  6.     // ...
  7. }


Code :
  1. class Controller_Dashboard {
  2.     // ...
  3.     public function fornetvibesAction {
  4.         $this->view->outputPlaceholder = $model->toNetVibesXML();
  5.     }
  6.     // ...
  7. }


Code :
  1. <div class="output">
  2.     <?= $this->outputPlaceholder ?>
  3. </div>

Message cité 1 fois
Message édité par MEI le 29-04-2011 à 14:05:47

---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
n°2072658
skeye
Posté le 29-04-2011 à 14:06:09  profilanswer
 

MEI a écrit :


:non: La vue sont boulot c'est de présenter ça.

 

...tu es désespérant.[:prozac]
 Pour son problème, le format XML en question EST de la présentation.[:el g]

Message cité 1 fois
Message édité par skeye le 29-04-2011 à 14:06:26

---------------
Can't buy what I want because it's free -
n°2072659
koskoz
They see me trollin they hatin
Posté le 29-04-2011 à 14:06:42  profilanswer
 

flo850 a écrit :


oui, a part le select au début qui doit etre dans un modèle ( Module::findAll() par exemple)


 
Apparemment les gens qui utilisent Play et Hibernate foutent ces findAll dans les controlleurs.
En toute logique c'est sensé aller dans une couche supplémentaire (que nous on appelle fabrique en cours, du coup je sais pas comment ça s'appelle réellement), mais vu que c'est du MVC...
Et pareil, dilemme, un modèle représente un objet, foutre un findAll dans un objet n'a pas trop de sens.


---------------
Twitter
n°2072661
skeye
Posté le 29-04-2011 à 14:08:18  profilanswer
 

koskoz a écrit :


 
Apparemment les gens qui utilisent Play et Hibernate foutent ces findAll dans les controlleurs.
En toute logique c'est sensé aller dans une couche supplémentaire (que nous on appelle fabrique en cours, du coup je sais pas comment ça s'appelle réellement), mais vu que c'est du MVC...
Et pareil, dilemme, un modèle représente un objet, foutre un findAll dans un objet n'a pas trop de sens.


Quel est le problème avec une classe du modèle avec une méthode statique findall qui te retourne un tableau d'instances de cette classe?[:autobot]


---------------
Can't buy what I want because it's free -
n°2072665
MEI
|DarthPingoo(tm)|
Posté le 29-04-2011 à 14:10:57  profilanswer
 

skeye a écrit :


 
...tu es désespérant.[:prozac]
 Pour son problème, le format XML en question EST de la présentation.[:el g]


Si c'est du Web, à priori il ne va pas balancer le XML as is, mais dans un page pour que l'utilisateur puisse au moins le copier/coller facilement.
 
Donc si le XML n'est qu'une partie du contenu de la page, y'a pas de raison que ce soit fait par la vue, alors que spécifiquement cette partie pourrais être réutilisable pour une autre utilisation.
 
Les contrôleurs et vues de 30 kms de long c'est juste le mal.


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
n°2072667
skeye
Posté le 29-04-2011 à 14:13:36  profilanswer
 

MEI a écrit :

Donc si le XML n'est qu'une partie du contenu de la page, y'a pas de raison que ce soit fait par la vue, alors que spécifiquement cette partie pourrais être réutilisable pour une autre utilisation.

 

Si. Il veut sortir plusieurs formes de XML en fonction du service ciblé. Les données sont les mêmes, seule la manière dont elles sont présentées diffèrent. Ce n'est pas du modèle mais de la vue, point barre.


Message édité par skeye le 29-04-2011 à 14:13:46

---------------
Can't buy what I want because it's free -
n°2072670
flo850
moi je
Posté le 29-04-2011 à 14:14:53  profilanswer
 

koskoz a écrit :


 
Apparemment les gens qui utilisent Play et Hibernate foutent ces findAll dans les controlleurs.
En toute logique c'est sensé aller dans une couche supplémentaire (que nous on appelle fabrique en cours, du coup je sais pas comment ça s'appelle réellement), mais vu que c'est du MVC...
Et pareil, dilemme, un modèle représente un objet, foutre un findAll dans un objet n'a pas trop de sens.


en static , çane me semble pas mal  
plutot que de faire une classique «fabrique» avec juste ça


---------------

n°2072677
FlorentG
Posté le 29-04-2011 à 14:17:18  profilanswer
 

MEI a écrit :

Donc si le XML n'est qu'une partie du contenu de la page, y'a pas de raison que ce soit fait par la vue, alors que spécifiquement cette partie pourrais être réutilisable pour une autre utilisation.


Sauf que ta vue est censée aussi être réutilisable.
 
T'as une view qui génère une représentation des données pour l'utilisateur. Que ces données soient ensuite embedded dans une page, ou directement proposées en téléchargement, ça change que tchouf, c'est d'la vue.
 
T'as d'un côté le modèle qui se charge de stocker les données (ici apparemment ça va être la liste des modules choisis, et leur config peut-être), stockage dont les autres couches s'en foutent (ça peut être dans une BDD, un fichier XML, ou du .ini). Et de l'autre côté la représentation de ces mêmes-données.  
 
 
Faut bien faire la différence entre stockage, et représentation

n°2072687
MEI
|DarthPingoo(tm)|
Posté le 29-04-2011 à 14:24:25  profilanswer
 

FlorentG a écrit :


Sauf que ta vue est censée aussi être réutilisable.
 
T'as une view qui génère une représentation des données pour l'utilisateur. Que ces données soient ensuite embedded dans une page, ou directement proposées en téléchargement, ça change que tchouf, c'est d'la vue.
 
T'as d'un côté le modèle qui se charge de stocker les données (ici apparemment ça va être la liste des modules choisis, et leur config peut-être), stockage dont les autres couches s'en foutent (ça peut être dans une BDD, un fichier XML, ou du .ini). Et de l'autre côté la représentation de ces mêmes-données.  
 
 
Faut bien faire la différence entre stockage, et représentation


Ah okay, parce que vous êtes en MVC, pour vous un modèle c'est juste une structure quoi... :pt1cable:


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
n°2072692
FlorentG
Posté le 29-04-2011 à 14:28:06  profilanswer
 

MEI a écrit :

Ah okay, parce que vous êtes en MVC, pour vous un modèle c'est juste une structure quoi... :pt1cable:


Le modèle s'occupe de modéliser l'application sous forme d'objets métiers et offre une manière d'assurer leur persistence. La structure après tu choisis ce que tu préfères (genre ActiveRecord, etc.).

Message cité 1 fois
Message édité par FlorentG le 29-04-2011 à 14:28:17
n°2072694
MEI
|DarthPingoo(tm)|
Posté le 29-04-2011 à 14:29:38  profilanswer
 

FlorentG a écrit :


Le modèle s'occupe de modéliser l'application sous forme d'objets métiers et offre une manière d'assurer leur persistence. La structure après tu choisis ce que tu préfères (genre ActiveRecord, etc.).


Je parlais structure au sens programmation du terme.
 
Parce que s'il n'y a aucune méthode métier dessus, ça ne sert juste à rien... :spamafote:


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
n°2072697
skeye
Posté le 29-04-2011 à 14:31:28  profilanswer
 

MEI a écrit :


Ah okay, parce que vous êtes en MVC, pour vous un modèle c'est juste une structure quoi... :pt1cable:


 
Bon allez, un lien, histoire de te montrer qu'on te raconte des choses généralement admises..même si c'est pas la première fois que tu montres une compréhension toute personnelle de ce qu'est MVC...
http://fr.wikipedia.org/wiki/Mod%C [...] od.C3.A8le
 

Citation :

Le modèle représente le comportement de l'application : traitements des données, interactions avec la base de données, etc. Il décrit ou contient les données manipulées par l'application. Il assure la gestion de ces données et garantit leur intégrité. Dans le cas typique d'une base de données, c'est le modèle qui la contient. Le modèle offre des méthodes pour mettre à jour ces données (insertion, suppression, changement de valeur). Il offre aussi des méthodes pour récupérer ces données. Les résultats renvoyés par le modèle sont dénués de toute présentation.


---------------
Can't buy what I want because it's free -
n°2072711
MEI
|DarthPingoo(tm)|
Posté le 29-04-2011 à 14:49:45  profilanswer
 

skeye a écrit :


 
Bon allez, un lien, histoire de te montrer qu'on te raconte des choses généralement admises..même si c'est pas la première fois que tu montres une compréhension toute personnelle de ce qu'est MVC...
http://fr.wikipedia.org/wiki/Mod%C [...] od.C3.A8le
 

Citation :

Le modèle représente le comportement de l'application : traitements des données, interactions avec la base de données, etc. Il décrit ou contient les données manipulées par l'application. Il assure la gestion de ces données et garantit leur intégrité. Dans le cas typique d'une base de données, c'est le modèle qui la contient. Le modèle offre des méthodes pour mettre à jour ces données (insertion, suppression, changement de valeur). Il offre aussi des méthodes pour récupérer ces données. Les résultats renvoyés par le modèle sont dénués de toute présentation.



Donc tu met où la sérialisation/désérialisation si ce n’est pas dans le modèle ?
 
Exemple typique, j'ai un modèle Client, sa persistance est assuré par un ORM dans un SGBD, jusque là ça va. Mais bien sur, pour une communication B2B on utilise des WS SOAP en mode document... Forcement je vais avoir besoin d'une sérialisation XML dans ce format là...
 
Et pour moi un appel WS ce n'est pas une vue... :spamafote:


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
n°2072714
drasche
Posté le 29-04-2011 à 14:52:42  profilanswer
 

MEI a écrit :


Donc tu met où la sérialisation/désérialisation si ce n’est pas dans le modèle ?
 
Exemple typique, j'ai un modèle Client, sa persistance est assuré par un ORM dans un SGBD, jusque là ça va. Mais bien sur, pour une communication B2B on utilise des WS SOAP en mode document... Forcement je vais avoir besoin d'une sérialisation XML dans ce format là...
 
Et pour moi un appel WS ce n'est pas une vue... :spamafote:


Vue = output. Donc si, la sortie d'un service SOAP est une vue. Idem quand tu fais un appel AJAX pour recevoir un bout de XML qui va te permettre de rafraîchir ta page. Le problème du modèle est de maintenir des données, pas de les formater pour être lisibles par un système externe.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°2072715
skeye
Posté le 29-04-2011 à 14:53:05  profilanswer
 

MEI a écrit :

pour moi un appel WS ce n'est pas une vue... :spamafote:


C'est ballot, parce-que ça fait effectivement partie de la vue.[:jagstang]
TIP : Si c'est lié à un accès ne venant pas de ton appli, c'est de la vue.


---------------
Can't buy what I want because it's free -
n°2072716
skeye
Posté le 29-04-2011 à 14:54:57  profilanswer
 

Ah ça pour citer machinbidule qu'est trop une méga pointure de la mort ça y va, mais alors quand il s'agit de comprendre la base de la base ya plus grand monde...[:el g]


Message édité par skeye le 29-04-2011 à 14:55:05

---------------
Can't buy what I want because it's free -
n°2072725
MEI
|DarthPingoo(tm)|
Posté le 29-04-2011 à 15:02:43  profilanswer
 

drasche a écrit :


Vue = output. Donc si, la sortie d'un service SOAP est une vue. Idem quand tu fais un appel AJAX pour recevoir un bout de XML qui va te permettre de rafraîchir ta page. Le problème du modèle est de maintenir des données, pas de les formater pour être lisibles par un système externe.


Je parlais du cas où mon application appelais un Web Service.


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
n°2072726
skeye
Posté le 29-04-2011 à 15:04:30  profilanswer
 

MEI a écrit :


Je parlais du cas où mon application appelais un Web Service.


dans ce cas c'est évidemment du modèle, mais si tu ne vois pas la différence entre ça et le cas exposé par kozkoz, au-secours.[:roane]


---------------
Can't buy what I want because it's free -
n°2072729
MEI
|DarthPingoo(tm)|
Posté le 29-04-2011 à 15:07:03  profilanswer
 

skeye a écrit :


dans ce cas c'est évidemment du modèle, mais si tu ne vois pas la différence entre ça et le cas exposé par kozkoz, au-secours.[:roane]


Pour moi c'est pareil, c'est sérialiser un objet dans un format définis par une personne tiers et dont on a pas le contrôle.
 


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
n°2072731
FlorentG
Posté le 29-04-2011 à 15:07:47  profilanswer
 

MEI a écrit :

Pour moi c'est pareil, c'est sérialiser un objet dans un format définis par une personne tiers et dont on a pas le contrôle.


C'est pas parce que c'est la même chose que ça doit obligatoirement être au même endroit [:petrus75]

n°2072732
skeye
Posté le 29-04-2011 à 15:08:57  profilanswer
 

MEI a écrit :


Pour moi c'est pareil, c'est sérialiser un objet dans un format définis par une personne tiers et dont on a pas le contrôle.


Non. Dans un cas il s'agit d'accéder à une source de données. Dans l'autre il s'agit de présenter des données à l'utilisateur.
C'est pas parce-que tu utilises une fonction utilitaire dans une couche qu'elle ne peut pas être utilisée dans une autre couche pour faire autre chose.


Message édité par skeye le 29-04-2011 à 15:09:13

---------------
Can't buy what I want because it's free -
n°2072733
MEI
|DarthPingoo(tm)|
Posté le 29-04-2011 à 15:11:39  profilanswer
 

FlorentG a écrit :


C'est pas parce que c'est la même chose que ça doit obligatoirement être au même endroit [:petrus75]


Alors sous prétexte que, pour le moment, il ne prévois pas de communiquer avec son application avec un WS iGoogle ou NetVibes il va mettre son code dans une vue.
 
Alors qu'on sait que c'est un cas qui pourrais arriver tôt ou tard...
Et que si il le met dans le modèle, la personne qui un jour devras ajouter la fonctionnalité d'appel au WS trouvera très rapidement le code en question et n'aura pas a faire de refactoring avec tout les soucis que ça pose - refaire des tests de la fonctionnalité en question en plus de devoir faire les tests de la nouvelle fonctionnalité.


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
n°2072736
skeye
Posté le 29-04-2011 à 15:17:27  profilanswer
 

MEI a écrit :


Alors sous prétexte que, pour le moment, il ne prévois pas de communiquer avec son application avec un WS iGoogle ou NetVibes il va mettre son code dans une vue.
 
Alors qu'on sait que c'est un cas qui pourrais arriver tôt ou tard...
Et que si il le met dans le modèle, la personne qui un jour devras ajouter la fonctionnalité d'appel au WS trouvera très rapidement le code en question et n'aura pas a faire de refactoring avec tout les soucis que ça pose - refaire des tests de la fonctionnalité en question en plus de devoir faire les tests de la nouvelle fonctionnalité.


 
Putain mais t'es bouché toi hein...[:pingouino]
Ce n'est pas lui qui irait lire iGoogle ou netvibes, c'est l'inverse![:mechant]


---------------
Can't buy what I want because it's free -
n°2072741
MEI
|DarthPingoo(tm)|
Posté le 29-04-2011 à 15:21:47  profilanswer
 

skeye a écrit :


 
Putain mais t'es bouché toi hein...[:pingouino]
Ce n'est pas lui qui irait lire iGoogle ou netvibes, c'est l'inverse![:mechant]


Un WS tu sais, ça permet aussi d'envoyer des données... (si si je te jure, ça ne sert pas qu'à récupérer des données).
 
Genre il pourrais imaginer, via un appel WS à iGoogle, envoyer le document XML qu'il a généré, afin que son utilisateur n'ai pas à faire de copier/coller pour paramétrer sa page d'accueil.

Message cité 2 fois
Message édité par MEI le 29-04-2011 à 15:22:20

---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
n°2072742
skeye
Posté le 29-04-2011 à 15:23:51  profilanswer
 

MEI a écrit :


Un WS tu sais, ça permet aussi d'envoyer des données... (si si je te jure, ça ne sert pas qu'à récupérer des données).
 
Genre il pourrais imaginer, via un appel WS à iGoogle, envoyer le document XML qu'il a généré, afin que son utilisateur n'ai pas à faire de copier/coller pour paramétrer sa page d'accueil.


Bah dans ce cas tu sais quoi? C'est de la vue! [:dawak]


---------------
Can't buy what I want because it's free -
n°2072744
FlorentG
Posté le 29-04-2011 à 15:25:18  profilanswer
 

MEI a écrit :

Et que si il le met dans le modèle, la personne qui un jour devras ajouter la fonctionnalité d'appel au WS trouvera très rapidement le code en question et n'aura pas a faire de refactoring avec tout les soucis que ça pose - refaire des tests de la fonctionnalité en question en plus de devoir faire les tests de la nouvelle fonctionnalité.


En quoi c'est plus rapide à trouver de mettre dans le modèle plutôt que dans la view [:petrus dei]

 

Et quels refactoring ? Si le code est bien fait, la view est appelable par n'importe qui !


Message édité par FlorentG le 29-04-2011 à 15:25:33
n°2072849
koskoz
They see me trollin they hatin
Posté le 29-04-2011 à 19:41:30  profilanswer
 

MEI a écrit :

Genre il pourrais imaginer, via un appel WS à iGoogle, envoyer le document XML qu'il a généré, afin que son utilisateur n'ai pas à faire de copier/coller pour paramétrer sa page d'accueil.


 
Ouais par contre ça si je fais un excès de zèle c'est imaginable.


---------------
Twitter
n°2072857
koskoz
They see me trollin they hatin
Posté le 29-04-2011 à 20:03:41  profilanswer
 

flo850 a écrit :


en static , çane me semble pas mal  
plutot que de faire une classique «fabrique» avec juste ça


 
J'ai du mal à voir pourquoi ici l'utilisation du static est bien.
 
C'est pas préférable d'écrire ça :

Code :
  1. public List<Module> findAllModules(Long projectId) {        
  2.     JPAQuery query = this.find("SELECT modules FROM Project" );        
  3.     return query.fetch();
  4. }


 
Plutôt que ça :

Code :
  1. public static List<Module> findAllModules(Long projectId) {
  2.     models.Project project = models.Project.find("byId", projectId).first();
  3.     JPAQuery query = project.find("SELECT modules FROM Project" );        
  4.     return query.fetch();
  5. }


 
:??:


---------------
Twitter
n°2072869
0x90
Posté le 29-04-2011 à 21:08:46  profilanswer
 

koskoz a écrit :

Vous êtes en train de dire que je fou tout le code ci-dessous dans ma vue ? :heink:
 

Code :
  1. public static void generateXML(Long projectId) {
  2.     // Getting all the modules related to the project
  3.     models.Project project = models.Project.find("byId", projectId).first();
  4.     JPAQuery query = project.find("SELECT modules FROM Project" );        
  5.     List<models.Module> modules = query.fetch();
  6.     
  7.     // generating the iGoogle XML file
  8.     try {
  9.         // creating the document
  10.         DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance();
  11.         DocumentBuilder docBuilder = dbfac.newDocumentBuilder();
  12.         Document doc = docBuilder.newDocument();
  13.  
  14.         //Creating the XML tree
  15.  
  16.         //create the root element and add it to the document
  17.         Element root = doc.createElement("GadgetTabML" );
  18.         root.setAttribute("version", "1.0" );
  19.         doc.appendChild(root);
  20.  
  21.         //create child element, add an attribute, and add to root
  22.         Element tab = doc.createElement("Tab" );
  23.         tab.setAttribute("title", project.name);
  24.         root.appendChild(tab);
  25.         
  26.         // and so on
  27.         Element layout = doc.createElement("Layout" );
  28.         layout.setAttribute("spec", "THREE_COL_LAYOUT_1" );
  29.         tab.appendChild(layout);
  30.  
  31.         Element section = doc.createElement("Section" );
  32.         tab.appendChild(section);
  33.         
  34.         Element module, userPref, modulePrefs;
  35.         // iterate over all the modules
  36.         for (models.Module m : modules) {
  37.              module = doc.createElement("Module" );
  38.              module.setAttribute("type", "RSS" );
  39.              section.appendChild(module);
  40.             
  41.              userPref = doc.createElement("UserPref" );
  42.              userPref.setAttribute("name", "numItems" );
  43.              userPref.setAttribute("value", "3" );
  44.              module.appendChild(userPref);
  45.             
  46.              // TODO only works if the module has an URL field atm
  47.              Class c = m.getClass();
  48.              Field url = c.getField("url" );
  49.             
  50.              modulePrefs = doc.createElement("ModulePrefs" );
  51.              modulePrefs.setAttribute("xmlUrl", url.get(m).toString());
  52.              module.appendChild(modulePrefs);
  53.         }
  54.         
  55.         // generating the XML
  56.         renderXml(doc);
  57.  
  58.     } catch (Exception e) {
  59.         System.out.println(e);
  60.     }
  61. }



 
Euh, j'arrive comme un cheveux sur la soupe, mais pour vous le code il va forcément dans une des 3 classes ? Ça vous arrive jamais de faire des classes utilitaires, du genre disons XmlModelSerializer, qui peut se réutiliser, se tester, avoir des options, etc... OU un XmlSerializer générique, qui doit déjà exister, et auquel il suffit de passer des données bien structurées, sans ces miyyards d'appels de fonction.


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  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-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR