当前位置: 首页>>代码示例>>PHP>>正文


PHP ServiceLocatorInterface::createScopedServiceManager方法代码示例

本文整理汇总了PHP中Zend\ServiceManager\ServiceLocatorInterface::createScopedServiceManager方法的典型用法代码示例。如果您正苦于以下问题:PHP ServiceLocatorInterface::createScopedServiceManager方法的具体用法?PHP ServiceLocatorInterface::createScopedServiceManager怎么用?PHP ServiceLocatorInterface::createScopedServiceManager使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Zend\ServiceManager\ServiceLocatorInterface的用法示例。


在下文中一共展示了ServiceLocatorInterface::createScopedServiceManager方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: createService

 /**
  * Create the controller loader service
  *
  * Creates and returns a scoped service manager. The only controllers
  * this manager will allow are those defined in the application
  * configuration's "controllers" array. If a controller is matched, the
  * scoped manager will attempt to load the controller, pulling it from
  * a DI service if a matching service is not found. Finally, it will
  * attempt to inject the controller plugin manager if the controller
  * implements a setPluginManager() method.
  *
  * @param  ServiceLocatorInterface $serviceLocator
  * @return ServiceManager
  */
 public function createService(ServiceLocatorInterface $serviceLocator)
 {
     if (!$serviceLocator instanceof ServiceManager) {
         return $serviceLocator;
     }
     $controllerLoader = $serviceLocator->createScopedServiceManager();
     $configuration = $serviceLocator->get('Configuration');
     if (isset($configuration['di']) && $serviceLocator->has('Di')) {
         $di = $serviceLocator->get('Di');
         $controllerLoader->addAbstractFactory(new DiAbstractServiceFactory($di, DiAbstractServiceFactory::USE_SL_BEFORE_DI));
         $controllerLoader->addInitializer(new DiServiceInitializer($di, $serviceLocator));
     }
     $controllerLoader->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 (method_exists($instance, 'setPluginManager')) {
             $instance->setPluginManager($serviceLocator->get('ControllerPluginBroker'));
         }
     });
     return $controllerLoader;
 }
开发者ID:navassouza,项目名称:zf2,代码行数:39,代码来源:ControllerLoaderFactory.php

示例2: createService

 /**
  * Create the controller loader service
  *
  * Creates and returns a scoped service manager. The only controllers 
  * this manager will allow are those defined in the application 
  * configuration's "controllers" array. If a controller is matched, the
  * scoped manager will attempt to load the controller, pulling it from 
  * a DI service if a matching service is not found. Finally, it will
  * attempt to inject the controller plugin broker into the controller if
  * it subscribes to the Pluggable interface.
  * 
  * @param  ServiceLocatorInterface $serviceLocator 
  * @return ServiceManager
  */
 public function createService(ServiceLocatorInterface $serviceLocator)
 {
     if (!$serviceLocator instanceof ServiceManager) {
         return $serviceLocator;
     }
     $controllerLoader = $serviceLocator->createScopedServiceManager();
     $configuration = $serviceLocator->get('Configuration');
     $routeMatch = $serviceLocator->get('application')->getMvcEvent()->getRouteMatch();
     if ($routeMatch && $routeMatch instanceof \Zend\Mvc\Router\RouteMatch) {
         $routeMatchName = $routeMatch->getMatchedRouteName();
         $controllerName = $routeMatch->getParam('controller');
         if (isset($configuration['router']['routes'][$routeMatchName]) && ($routeConfiguration = $configuration['router']['routes'][$routeMatchName])) {
             if (isset($routeConfiguration['type']) && $routeConfiguration['type'] === 'Eva\\Mvc\\Router\\Http\\ModuleRoute') {
                 $configuration['controller']['classes'][$controllerName] = $controllerName;
             }
         }
     }
     if (isset($configuration['controller'])) {
         foreach ($configuration['controller'] as $type => $specs) {
             if ($type == 'classes') {
                 foreach ($specs as $name => $value) {
                     $controllerLoader->setInvokableClass($name, $value);
                 }
             }
             if ($type == 'factories') {
                 foreach ($specs as $name => $value) {
                     $controllerLoader->setFactory($name, $value);
                 }
             }
         }
     }
     if (isset($configuration['di']) && $serviceLocator->has('Di')) {
         $di = $serviceLocator->get('Di');
         $controllerLoader->addAbstractFactory(new DiAbstractServiceFactory($di, DiAbstractServiceFactory::USE_SL_BEFORE_DI));
         $controllerLoader->addInitializer(new DiServiceInitializer($di, $serviceLocator));
     }
     $controllerLoader->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 Pluggable) {
             $instance->setBroker(clone $serviceLocator->get('ControllerPluginBroker'));
         }
     });
     return $controllerLoader;
 }
开发者ID:ahyswang,项目名称:eva-engine,代码行数:63,代码来源:ControllerLoaderFactory.php


注:本文中的Zend\ServiceManager\ServiceLocatorInterface::createScopedServiceManager方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。