/**
  * Class responsible for instantiating a DiAbstractServiceFactory
  *
  * @param  ServiceLocatorInterface $serviceLocator
  * @return DiAbstractServiceFactory
  */
 public function createService(ServiceLocatorInterface $serviceLocator)
 {
     $factory = new DiAbstractServiceFactory($serviceLocator->get('Di'), DiAbstractServiceFactory::USE_SL_BEFORE_DI);
     if ($serviceLocator instanceof ServiceManager) {
         /* @var $serviceLocator ServiceManager */
         $serviceLocator->addAbstractFactory($factory);
     }
     return $factory;
 }
示例#2
0
 /**
  * Create and return abstract factory seeded by dependency injector
  *
  * Creates and returns an abstract factory seeded by the dependency
  * injector. If the "di" key of the configuration service is set, that
  * sub-array is passed to a DiConfiguration object and used to configure
  * the DI instance. The DI instance is then used to seed the
  * DiAbstractServiceFactory, which is then registered with the service
  * manager.
  *
  * @param  ServiceLocatorInterface $serviceLocator
  * @return Di
  */
 public function createService(ServiceLocatorInterface $serviceLocator)
 {
     $di = new Di();
     $config = $serviceLocator->get('Configuration');
     if (isset($config['di'])) {
         $di->configure(new DiConfiguration($config['di']));
     }
     if ($serviceLocator instanceof ServiceManager) {
         // register as abstract factory as well:
         $serviceLocator->addAbstractFactory(new DiAbstractServiceFactory($di, DiAbstractServiceFactory::USE_SL_BEFORE_DI));
     }
     return $di;
 }
示例#3
0
 /**
  * @param ServiceLocatorInterface $sl
  * @param Di $di
  * @return void
  */
 protected function registerAbstractFactory(ServiceLocatorInterface $sl, Di $di)
 {
     if ($sl instanceof ServiceManager) {
         /* @var $sl ServiceManager */
         $sl->addAbstractFactory(new DiAbstractServiceFactory($di, DiAbstractServiceFactory::USE_SL_BEFORE_DI));
     }
 }