/** * Create the controller loader service * * Creates and returns an instance of ControllerManager. 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. * Finally, it will attempt to inject the controller plugin manager * if the controller implements a setPluginManager() method. * * This plugin manager is _not_ peered against DI, and as such, will * not load unknown classes. * * @param ServiceLocatorInterface $serviceLocator * @return ControllerManager */ public function createService(ServiceLocatorInterface $serviceLocator) { $controllerLoader = new ControllerManager(); $controllerLoader->setServiceLocator($serviceLocator); $controllerLoader->addPeeringServiceManager($serviceLocator); $config = $serviceLocator->get('Config'); if (isset($config['di']) && isset($config['di']['allowed_controllers']) && $serviceLocator->has('Di')) { $controllerLoader->addAbstractFactory($serviceLocator->get('DiStrictAbstractServiceFactory')); } return $controllerLoader; }
public function setUp() { $this->services = $services = new ServiceManager(); $this->controllers = $controllers = new ControllerManager(); $this->factory = $factory = new ResourceControllerFactory(); $controllers->addAbstractFactory($factory); $controllers->setServiceLocator($services); $services->setService('Zend\\ServiceManager\\ServiceLocatorInterface', $services); $services->setService('Config', $this->getConfig()); $services->setService('ControllerLoader', $controllers); $services->setFactory('ControllerPluginManager', 'Zend\\Mvc\\Service\\ControllerPluginManagerFactory'); $services->setInvokableClass('EventManager', 'Zend\\EventManager\\EventManager'); $services->setInvokableClass('SharedEventManager', 'Zend\\EventManager\\SharedEventManager'); $services->setShared('EventManager', false); }
public function getServiceManager() { $controllers = new ControllerManager(); $controllers->addAbstractFactory('ZF\\Rest\\Factory\\RestControllerFactory'); $services = new ServiceManager(); $services->setService('Zend\\ServiceManager\\ServiceLocatorInterface', $services); $services->setService('ControllerLoader', $controllers); $services->setService('Config', ['zf-rest' => ['Api\\RestController' => ['listener' => 'CollectionIntegrationListener', 'page_size' => 3, 'route_name' => 'resource', 'route_identifier_name' => 'id', 'collection_name' => 'items', 'collection_query_whitelist' => ['query']]]]); $services->setInvokableClass('SharedEventManager', 'Zend\\EventManager\\SharedEventManager'); $services->setInvokableClass('CollectionIntegrationListener', 'ZFTest\\Rest\\TestAsset\\CollectionIntegrationListener'); $services->setFactory('EventManager', 'Zend\\Mvc\\Service\\EventManagerFactory'); $services->setFactory('ControllerPluginManager', 'Zend\\Mvc\\Service\\ControllerPluginManagerFactory'); $services->setShared('EventManager', false); $collection = $this->setUpCollection(); $services->addInitializer(function ($instance, $services) use($collection) { if (!$instance instanceof TestAsset\CollectionIntegrationListener) { return; } $instance->setCollection($collection); }); $controllers->setServiceLocator($services); $plugins = $services->get('ControllerPluginManager'); $plugins->setService('Hal', $this->linksHelper); return $services; }