/** * 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; }
/** * 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; }
/** * @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)); } }