Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Petite question,
Qu'elle est la différence entre application->getEventManager() et application->getServiceManager()->get('eventManager')
A priori on devrait obtenir la même instance non ?
Pas sûre...
Si quelqu'un a un argument, je suis preneuse.
Hors ligne
Salut Sophie, pour moi il n'y en a pas. En fait la classe Application implémente l'interface EventManagerAwareInterface ce qui veut dire que lorsque le service manager va l'instancier il va lui injecter l'eventManager et il va récupérer l'event manager de cette façon $serviceManager->get('EventManager'); donc que tu fasses $application->getEventManager() ou $application->getServiceManager()->get('EventManager') c'est la même chose. Dans le deuxième cas tu "parcours" plus de code puisque tu récupère le service manager pour ensuite récupérer l'event manager alors qu'il est déjà défini dans ta classe Application.
Hors ligne
Bonjour,
En fait, il y a une différence de taille et spécifique à ce service 'EventManager' : IL N'EST PAS "shared".
A ma connaissance, c'est le seul par défaut.
Ce qui veut dire que cet l'appel à
[lang=php]$application->getServiceManager()->get('EventManager')
te renverra une nouvelle instance d'un eventManger.
Alors que l'appel à
[lang=php]$application->getEventManager()
renvoie bien la même instance de l'eventManager lié à l'objet $application.
Dernière modification par jmleroux (17-05-2013 16:21:53)
Hors ligne
Bonjour,
Comme le dit jmleroux, l'identifiant "EventManager" n'est pas marqué comme partagé. Si c'était le cas, cela poserait des problèmes car à chaque fois que tu souhaiterait récupérer un gestionnaire d'évènement, tu obtiendrais la même instance avec des écouteurs et évènements déjà rattachés.
Tu trouvera le flag non partage explicite ici : https://github.com/zendframework/zf2/bl … ig.php#L65
Hors ligne
Et ben comme ça j'aurais appris un truc :p
Hors ligne