Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 11-09-2012 15:56:34

stefy31
Membre
Lieu: Lyon
Date d'inscription: 20-08-2009
Messages: 14
Site web

Bien utiliser les modules

Bonjour,
je me lance dans mon premier projet sous Zend2.
j'ai un peu de mal à comprendre comment bien utiliser l'architecture modulaire sous ZF2.
Sous ZF1, j'avais l'habitude de créer 2 modules, 1 module Public et 1 module Admin. Mes modèles étaient situés en dehors de ces modules, puisqu'ils devaient pouvoir être utilisés par le front et le back office.
si j'ai bien compris la philosophie des modules sous ZF2, il s'agit de regrouper au sein d'un module des fonctionnalités, par exemple: Blog, Newsletter, Article, User, etc.... chaque répertoire modulaire devant inclure tout ce qui se rattache au module en question, c'est à dire les controllers bien sûr, mais aussi les modèles, les vues, les images, les css, javascripts, etc ....
Je comprends que l'intérêt de tout ça est de pouvoir réutiliser un module d'un projet à un autre plus facilement.

Quelques questions à froid :
1) Le back-office dans tout ça correspondra tout de même à un module? du coup, pour ne pas répéter les modèles, il devra appeler les modèles des autres modules si besoin, c'est bien ça? Mais ainsi on se retrouve avec des dépendances entre modules hmm
2) Dans un projet classique, avec des "widgets", il n'est pas rare qu'une url corresponde à plusieurs modules. Par exemple, on va afficher un article au centre, et sur les côtés, on peut avoir un formulaire pour s'inscrire à la newsletter, un formulaire d'identification, les derniers blogs créés, etc....
La documentation et les exemples sont encore un peu rares sur le web. J'ai trouvé le plugin "forward" qui pourrait peut-être permettre de faire ce genre de choses. Est-ce que je suis sur la bonne piste?
3) Le projet sur lequel je travaille est assez complexe. J'ai peur de me retrouver avec des dizaines de modules et donc de dégrader les performances (j'ai vu qu'on pouvait améliorer ça en ne chargeant que les modules dont on a besoin); De plus, la plupart de ces modules ne contiendront probablement qu'un controller .... j'ai du mal à voir si il vaut mieux éclater l'application au maximum de manière à avoir plein de modules, avec 1 ou peu de controllers dedans, ou bien regrouper un peu les fonctionnalités afin d'avoir moins de modules . Qu'en pensez-vous?

Merci pour votre aide,

Hors ligne

 

#2 12-09-2012 09:55:18

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: Bien utiliser les modules

Salut, tu as tout à fait compris l'idée des modules de ZF2 le but est de permettre de les réutiliser facilement et un peu partout. Dans les faits c'est un peu différent puisque tu as des dépendances qui vont se créer entre les modules donc au final la réutilisation d'un module demandera soit de l'adapter pour que celui-ci soit compatible avec une autre application et donc au final ça te fera un module "différent" soit le penser et le concevoir de façon extrêmement modulable et ça demande un temps de développement beaucoup plus long.

1) Pour ton backoffice tu peux éventuellement faire un contrôleur admin dans chaque module qui effectuera les tâches du backoffice de chaque module comme ça pas de problèmes de dépendances. Mais c'est vrai que ça fait mieux d'avoir tout le backoffice dans un module

2) Si je dis pas de conneries le plugin forward te permet de faire appel à une action d'un contrôleur et te retourne la vue que le contrôleur doit afficher.

3) Pour la décomposition des modules c'est à toi de voir comment tu veux décomposer ton application pour qu'elle soit propre. Avoir qu'un seul contrôleur n'est pas forcément choquant c'est un petit module et puis c'est tout. A priori charger plusieurs modules ne dégrade pas plus les performances ça reste du routage de fichiers et la configuration est mergé dans un seule tableau.

Hors ligne

 

#3 15-09-2012 21:56:30

bakura
Administrateur
Date d'inscription: 30-01-2010
Messages: 353

Re: Bien utiliser les modules

Salut smile,

J'ai pas mal fait d'essais au niveau des modules, je pense qu'il faut éviter de trop te formaliser et de tenter à tout prix de faire quelque chose de générique. J'en ait fait l'expérience, penser ses modules de manière extrêmement générique est quelqeu chsoe de très difficile, qui prend du temps, qui ne se prête pas à toutes les occasions... et au final tu en viens à perdre du temps.

Pour autant, ce n'est pas une raison pour ne pas utiliser de modules. Les moduels t'aident effectivement à segmenter ton application. Comme tu le dis, tu peux avoir au sein d'une application un module "Messagerie", "Forum", "Blog", "Notification"... Si tu pars sur une optique de rendre tes modules génériques, il va falloir que tu passes beaucoup de temsp à bien penser ton architecture pour la rendre modulable au maximum, offrir des hooks (points d'entrées) un peu partout à base d'évènements (par exemple, si tu souhaites, dans le cadre de ton application, envoyer un mail chaque fois qu'un message de forum est écrit, il va falloir que tu lances un évènement  dans un hypothétique service Forum, afin de pouvoir "l'attraper" dans ta couche applicative pour envoyer un évènement).

Selon moi ça ne vaut pas l'effort. Et en partant de ce principe, ce n'est dès lors plus un problème que tes modules soient couplés.

1) Le back-office peut correspondre à un module Admin oui, mais qui logiquement ne devrait pas contenir de contrôleurs spécfiqieus à ton application. Mais un module Admin aurait un sens pour donner des routes par défaut, un mécanisme spécifique de connexion...

2) Pour les widget, oui, regarde du côté de forward ;-). Le forward te permet de récupérer le résultat d'autres actions, et donc de créer un contenu par widget.

3) Les modules sont assez légers, n'hésite pas à en créer plusieurs, ce n'est pas vraiemnt ça qui va psoer un problème de performance (en fait, ce qu'il se passe au niveau du framework, c'est que pour chaque module, le framework va récupérer les configurations, les mergés, et, si tu les définis, appeler, pour chaque module, les fonctions init, onBootstrap... et quelques autres). Tu as également une option du ModuleManager te permettant de mettre ne cache ce fichier de configuration. Du coup, à moins d'avoir des fonctions très lourdes que tu effectues dans onBootstrap et/ou init (ce qui est déconseillé, tu ne devrais y avoir que des trucs assez légers), ne te soucie pas trop du nombre de modules.

Hors ligne

 

#4 17-09-2012 11:55:16

stefy31
Membre
Lieu: Lyon
Date d'inscription: 20-08-2009
Messages: 14
Site web

Re: Bien utiliser les modules

merci beaucoup pour vos réponses.
Je regarderai de plus près le gestionnaire d'évènements, j'en aurai besoin effectivement.

Pour l'admin, ce que j'ai en tête pour le moment (ça risque d'évoluer quand je commencerai bien entendu), c'est d'utiliser le framework ExtJs sur lequel j'ai fait quelques essais, et qui fournit des fonctionnalités vraiment intéressantes. Je vais donc probablement reporter une bonne partie de la complexité côté client grâce à ExtJs.

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages