Bonjour,
J'ai lu que Zend_Registry, il ne fallait pas y abuser. Il est vrai que dans un cas extrême, on pourrait avoir :
Zend_Registry::get('Zend_View')->...
Zend_Registry::get('Zend_Request')->...
Ce qui fonctionnerait certainement assez bien, mais pas vraiment logique. Seulement, c'est un peu comme les Singleton : on dit qu'ils sont à utiliser pour interdire l'instanciation multiple, souvent par rapport à la "sécurité", d'autres parlent aussi de "performances", d'autres soutiennent plus ou moins leur qualité en tant qu'objet accessible partout. Là encore, un gros débat là-dessus. Pour l'instant, je me cantonne à l'instanciation unique pour sécurité voire performances mais jamais par accessibilité, mais c'est pas fixé(ps : le singleton, c'est bien, mais j'ai quand même eu une periode de Singletonite où tout était Singleton).
Donc on se retrouve avec plusieurs possibilités pour les objets : Le registre, la dépendance à un autre / association (en étant attribut d'un objet), ou l'instanciation systématique.
Par exemple, Zend_Db_Table (de mémoire) s'instancie autant de fois que d'utilisation (mais là, je commence le projet, à voir donc dans quelles circonstances).
Par contre, ma question réelle, c'est le Zend_Session_Namespace. Par exemple, je l'instancie dans mon bootstrap (hé oui, j'en ai besoin à chaque page), dois-je l'injecter dans la vue et le controlleur pour récupérer l'instance ? Dois-je l'enregistrer dans le registre et aller le chercher à chaque fois ? Dois-je l'instancier comme il est si facile de le faire ?
Dans le coté j'instancie systématiquement, ce qui me gène un peu c'est ce côté "new ..." comme si je créais. Or, je ne le crée pas, il existe. Meme s'il pointe sur un même contenu, ça me paraît pas d'une logique énorme (d'ailleurs j'y pense : kezako si je le mets en lecture seule ? A voir dans le Code source). Si je le mets dans le registre, ça me choque pas. Mais je me souviens de la phrase ... Par ailleurs, actuellement, je l'ai instancé dans le bootstrap et l'ai injecté directement dans la vue.
Voilà, je pourrais disserter pendant des heures, mais je crois que vous avez déjà assez souffert. Je vous laisse m'éclairer
Merci et a+ !
Partager