/** * @param ServiceLocatorInterface|ServiceManager $serviceLocator * @return mixed */ public function createService(ServiceLocatorInterface $serviceLocator) { $config = $serviceLocator->get('Configuration'); $serviceConfig = new Config(isset($config['domain_services']) ? $config['domain_services'] : array()); $domainServiceFactory = new ServiceManager($serviceConfig); $serviceLocator->addPeeringServiceManager($domainServiceFactory); $domainServiceFactory->addInitializer(function ($instance) use($serviceLocator) { if ($instance instanceof ServiceLocatorAwareInterface) { $instance->setServiceLocator($serviceLocator->get('Zend\\ServiceManager\\ServiceLocatorInterface')); } if ($instance instanceof EventManagerAwareInterface) { $instance->setEventManager($serviceLocator->get('EventManager')); } if ($instance instanceof EntityManagerAwareInterface) { try { $instance->setEntityManager($serviceLocator->get('EntityManager')); } catch (\Zend\ServiceManager\Exception\ServiceNotFoundException $e) { // no entitymanager set // TODO: log } } }); return $domainServiceFactory; }