Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework
Zend Framework Forum d'entraide sur la programmation PHP avec Zend Framework. Avant de poster -> FAQ ZF, Cours ZF
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/12/2010, 11h18   #1
Rédacteur
 
Avatar de Bakura
 
Homme Michaël
Étudiant
Inscription : septembre 2005
Messages : 1 367
Détails du profil
Informations personnelles :
Nom : Homme Michaël
Âge : 22
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : septembre 2005
Messages : 1 367
Points : 2 701
Points : 2 701
Par défaut Architecture des modules

Hej !

J'ai l'obligation d'utiliser une architecture modulaire pour un devoir, toutefois j'ai quelques interrogations concernant l'utilisation des modules avec Zend.

La première question concerne la structure. En effet la documentation du framework est contradictoire sur ce point. Cette page sous-entend que le module par défaut se trouve un "étage" au-dessus, au contraire de cette page où le dossier application ne contient ni controller/models/views, qui sont donc contenues dans les différents modules, le module default étant au même niveau que les autres.

Quel est votre avis la-dessus ? En ce qui me concerne, je trouve plus logique l'architecture créée via Zend_Tool, et la création d'un module default. Par exemple, si je prends le cas d'un site avec deux modules : default (frontend) et admin (backend), j'arrive avec cette architecture de fichiers :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
application
   --- controllers
   --- models
   --- views
   --- modules
         --- default
              --- controllers
              --- models
              --- views
         --- admin
              --- controllers
              --- models
              --- views
Reste maintenant à savoir comment organiser les fichiers. Comme je comprends cette architecture, cela signifierait que les modèles communs seraient contenus dans le dossier models le plus haut. Typiquement, un modèle User serait utilisé à la fois dans le module par défaut et le module admin, et ce modèle se retrouverait donc dans le dossier models le plus haut. De manière générale, la majorité des modèles se retrouveraient dans le dossier models le plus haut dans la hiérarchie, car utilisés à la fois par le frontend et le backend. En revanche, les dossiers controllers et views seraient le plus souvent vides, car les controllers et les views sont spécifiques au module.

De la même manière, les dossiers models des modules seraient souvent vides, au contraire des dossiers controllers/views.

Cela vous paraît-il logique ? Ou alors vous pensez qu'il est préférable d'avoir les modèles dans les modules, quitte à les dupliquer ?

Reste ensuite la question des layout. Zend_Tool n'autorise pas la création de plusiuers layout (zf enable layout). Ce qui signifie que le dossier layout est créé dans le dossier application. Le layout contiendrait donc typiquement un script pour chaque module, default.phtml et admin.phtml, et un plugin se chargerait de sélectionner le bon layout suivant le module. La encore, est-il préférable de créer un dossier layout par module ?

Merci de vos réponses. Je sais que ces questions ne sont finalement pas très importantes et plus "conceptuelles", mais la gestion des modules est plutôt complexe, je trouve. J'aimerais donc les utiliser logiquement .
Bakura est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2010, 14h49   #2
Membre expérimenté
 
Avatar de amoiraud
 
Homme Adrien
Développeur Web
Inscription : octobre 2006
Messages : 405
Détails du profil
Informations personnelles :
Nom : Homme Adrien
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : octobre 2006
Messages : 405
Points : 531
Points : 531
Envoyer un message via MSN à amoiraud
Salut,
Je ne comprend pas bien ton architecture, pourquoi a tu un dossier controller et view a la racine de l'application si tu utilise des modules ?
Je pense qu'il y à beaucoup d'architectures possibles, voici celle que j'utilise et qui est présentée dans le livre "Zend Framework, bien developper en PHP" :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
application
   --- config
   --- logs
   --- model
   --- modules
        --- back
             --- controllers
             --- views
                  --- index
                  header.phtml
                  layout.phtml
                  footer.phtml
        --- front
             --- controllers
             --- views
                  --- index
                  header.phtml
                  layout.phtml
                  footer.phtml
   --- sessions
Comme tu peut le voir, j'ai un layout par module (enfin plusieurs mais je parle du layout.phtml), les controllers et views sont eux aussi triés par modules, quand aux models, je préfère les mettre à la racine mais je pense que tu peut parfaitement en mettre également dans les modules si tu veut les séparer en jouant avec l'autoloader et les include paths.
En tout cas, c'est a toi d'adapter ton architecture en fonction des besoins de ton projet, je ne pense pas qu'il existe une règle précise en la matière, c'est pas le genre de ZF

EDIT : En ce qui concerne le module default, tu peut changer son nom via ton fichier application.ini :
Code :
1
2
 
resources.frontcontroller.defaultmodule = front
amoiraud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2010, 15h30   #3
Rédacteur
 
Avatar de Bakura
 
Homme Michaël
Étudiant
Inscription : septembre 2005
Messages : 1 367
Détails du profil
Informations personnelles :
Nom : Homme Michaël
Âge : 22
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : septembre 2005
Messages : 1 367
Points : 2 701
Points : 2 701
Salut,

Effectivement ton architecture est logique. L'architecture que j'obtiens c'est en utilisant Zend_Tool. Quand tu créés le projet avec zf create project, puis zf create module, il ne te supprime les dossiers controllers/views. C'est vrai que j'ai du mal à savoir quand ces dossiers peuvent-être utiles, car typiquement on aura ni les mêmes vues ni les mêmes controlleurs dans les différents modules.

Enfin je te remercie, ça confirme mon idée .
Bakura est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2010, 17h58   #4
Membre expérimenté
 
Avatar de amoiraud
 
Homme Adrien
Développeur Web
Inscription : octobre 2006
Messages : 405
Détails du profil
Informations personnelles :
Nom : Homme Adrien
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : octobre 2006
Messages : 405
Points : 531
Points : 531
Envoyer un message via MSN à amoiraud
Ah ok, je n'ai jamais utilisé Zend_tool.
De rien
amoiraud est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h41.


 
 
 
 
Partenaires

Hébergement Web