IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend Framework PHP Discussion :

Architecture des modules


Sujet :

Zend Framework PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 .

  2. #2
    Membre émérite
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 606
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    resources.frontcontroller.defaultmodule = front

  3. #3
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Par défaut
    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 .

  4. #4
    Membre émérite
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 606
    Par défaut
    Ah ok, je n'ai jamais utilisé Zend_tool.
    De rien

Discussions similaires

  1. Bonjour, des modules pour Truevision3d ?
    Par Phomos dans le forum C++
    Réponses: 1
    Dernier message: 28/09/2005, 18h18
  2. [c++]Architecture des classes pour un jeu
    Par Pegasus32 dans le forum C++
    Réponses: 23
    Dernier message: 16/02/2005, 14h07
  3. Architecture des GPU
    Par DevNull dans le forum Assembleur
    Réponses: 2
    Dernier message: 11/07/2004, 13h00
  4. Recherche des dépendances des modules
    Par slowpoke dans le forum Mandriva / Mageia
    Réponses: 9
    Dernier message: 11/12/2003, 08h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo