|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité régulier
![]() Inscription : décembre 2003 Messages : 20 ![]() |
Bonjour,
Je travaille sur un projet en Zend mais je bosse tout seul donc je dois chercher mes infos un peu à droite à gauche. Je dois générer des fichiers XML. Pour faire vite dans un premier temps, j'en ai généré un que j'affiche dans ma fenêtre de navigateur, avec les entêtes XML. C'est ma vue qui s'en charge : déjà je me demande si c'est bien malin, en voici le code (elle fait appel à un helper de vue pour dérouler le contenu) : Code :
Cordialement, Thomas |
||
|
|
00
|
|
|
#2 | ||||||||||
|
Membre régulier
![]() Benjamin DuboisChef de projet NTIC Inscription : février 2008 Messages : 65 ![]() |
Salut,
Si l'objectif de ton action est de générer un fichier XML à stocker sur le serveur, alors je pense que la génération du flux est du ressort du modèle, et non de la vue. Plus précisément, j'opterais pour 2, voire 3 objets de modèle : Option 1 : un modèle composé de 2 objets : dans cette option, on a 2 objets : - 1 entité qui contient tes données - 1 objet qui est en charge de la sérialisation/désérialisation de ton entité en Xml Exemple : Code :
C'est pourquoi, si tu penses qu'un jour tu pourrais avoir besoin d'écrire un fichier respectant un autre format, tu peux ajouter un 3ème objet, en fonction du format de fichier à créer. Le datamapper délèguera à ce nouvel objet l'écriture réelle du fichier. Cette solution est plus souple et plus pérenne : Option 2 : un modèle composé de 3 objets L'entité (ici la classe Model_Vehicule) ne change pas, mais le dataMapper délègue l'écriture à un objet spécialisé, qu'il suffit de changer pour changer le format du fichier Code :
Code :
Code :
- l'entité est responsable de l'organisation des données - le datamapper est responsable des opérations de persistance des données - le serializer est responsable du format de fichier des données Voila pour le modèle. Avec cette organisation, ta vue n'est plus responsable de la génération du fichier XML, et du coup tu peux : - la désactiver complètement (pour le lancement d'une action en tâche de fond par exemple) : Code :
Voilà, c'est un peu long et je pense qu'on peut factoriser un peu tout ça, mais j'espère que ça t'aidera... @+ - benjamin |
||||||||||
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : décembre 2003 Messages : 20 ![]() |
Bonjour,
Merci pour cette réponse, un peu tardive certes mais très claire et je pense qu'elle me sera utile. Le projet pour le moment n'avance pas trop mais rien que pour ma culture personnelle, je vais me pencher sur ce que tu proposes. Merci encore. Tom |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com