10 mai 2013
Accès au service manager depuis n’importe quelle classe
Si vous avez besoin d’accéder au service manager depuis une classe perso, voici comment faire.Vous devez implémenter le ServiceManagerAwareInterface qui ne contient que deux fonctions ‘getServiceManager’ et ‘setServiceManager’. Voici comment faire:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
namespace My\Mvc; use Zend\ServiceManager\ServiceManagerAwareInterface; use Zend\ServiceManager\ServiceManager; class Model implements ServiceManagerAwareInterface { protected $serviceManager; public function getServiceManager(){ return $this->serviceManager ; } public function setServiceManager(ServiceManager $serviceManager) { $this->serviceManager = $serviceManager; return $this; } } |
Une fois ceci fait vous pourrez utiliser $this->getServiceManager() dans les méthodes de la classe. Il est cependant nécessaire que l’objet soit instancié par le service manager pour que celui-ci s’injecte dans la classe. On le déclare donc comme invocable dans la configuration.
1 2 3 |
'invokables' => array( 'My\Mvc\Model' => 'My\Mvc\Model', ), |
Vous savez désormais accéder au service manager de Zend Framework 2 depuis n’importe quelle classe. Personnellement, j’utilise très souvent cette méthode.