Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
Mon application contient une classe générique utilisées sur tout l'application.
Ce classe accède au BDD et réalise des traitements.
quels sont les étapes pour créer cette classe générique?
Merci d'avance.
Hors ligne
Bonjour,
Pour créer cette classe générique, il faudrait que ce soit un service, déclaré comme invokables si aucune dépendance n'est présente, sinon via une factory. Après il faut qu'elle soit dans le module Application, pour être ainsi appelé de partout.
Et tu peux ainsi la récupérer dans tous les services de ton application. Soit directement via le serviceLocator dans ton service, soit via injection de dépendance.
Hors ligne
JGreco a écrit:
Après il faut qu'elle soit dans le module Application, pour être ainsi appelé de partout.
Pas nécessairement, suffit qu'elle soit dans un module
Hors ligne
yasmina a écrit:
Bonjour à tous,
Mon application contient une classe générique utilisées sur tout l'application.
Alors d'accord pas obligatoire qu'elle soit dans le module Application, on peut la mettre partout, mais si elle est commune a toute l'appli cela à plus de sens de la définir dedans.
Hors ligne
Pas forcément tu peux très bien avoir un module qui va gérer tout ce qui est envoi de mail. Et en avoir besoin dans différents module de ton application. Dans ce cas les classes dont tu auras besoin seront dans le module mail et seront utilisées dans tous les autres .
Hors ligne
Et donc sans utiliser les événement/Listeners on aura une dépendance entre mail et les module l'utilisant ?
Hors ligne
Oui tout comme un module User et un module Blog, un module de gestion de paniers avec un module de gestion des articles etc ...
Hors ligne
Je pense qu'il faut séparer les types de modules et de lien dans ce cas. Pour un module d'envoi d'email de faible importance ou de loguer des infos non critiques, je pense que les évènements sont particulièrement utiles. De même pour étendre des libs third party ou ajouter certaines fonctionnalités qui doivent être réellement atomiques.
Dans le contexte de ce post, je ne suis pas convaincu par les évènements. Le module ne marchera pas sans les classes en question, donc plutôt un système d'interfaces et de factories/invokables permettant de choisir quelle classe passer (celle de la dépendance).
Au passage, j'ai vu un message de Bakura sur Github à propos de ZF3 et il semblerait qu'il soit prudent de commencer à utiliser uniquement des factories, plus d'invokables, et de ne plus utiliser FactoryInterface mais directement des classes invokables.
Hors ligne
Théocrite a écrit:
Au passage, j'ai vu un message de Bakura sur Github à propos de ZF3 et il semblerait qu'il soit prudent de commencer à utiliser uniquement des factories, plus d'invokables, et de ne plus utiliser FactoryInterface mais directement des classes invokables.
Yep utiliser des dépendances fortes est recommandé ça évite d'avoir à injecter le service locator dans nos services, classes. L'utilisation d'invokables est toujours possible dans le cas où la classe reste simple et n'a aucune dépendance mais c'est finalement assez rare.
Dans quel cas tu voulais utiliser FactoryInterface ? Je t'ai pas suivi :p ?
D'ailleurs à ce propos nous organisons un meetup qui aura lieu normalement la semaine prochaine à Paris sur le Service Manager.
Hors ligne
JGrecko évoquait la création d'une factory dans son premier message, et pour une raison qui m'échappe j'avais l'habitude de mettre toutes mes classes de factory implementation de factoryInterface, j'ai donc jugé bon de le signaler d'un point de vue facilité de migration.
Tu nous feras un retour sur le meetup ? Paris c'est loin, je peux pas venir !
Hors ligne
Pour le coup j'ai FactoryInterface aussi dedans. Je lui en parlerais du coup .
Yep pas de soucis ^^.
Hors ligne
Bonjour,
Je remonte ce post ou une discussion était déjà amorcée sur FactoryInterface, les invokables et ZF3. Un quelconque retour a ce niveau ??
Hors ligne
Hello, t'as tout ici : http://framework.zend.com/blog/zend-fra … admap.html et plus précisément pour le Service Manager ici : https://github.com/zendframework/zend-s … gration.md
Hors ligne