/** * Attach one or more listeners * * @param EventManagerInterface $events * @param int $priority * @return DefaultListenerAggregate */ public function attach(EventManagerInterface $events, $priority = 1) { $options = $this->getOptions(); $configListener = $this->getConfigListener(); $locatorRegistrationListener = new LocatorRegistrationListener($options); $moduleLoaderListener = new ModuleLoaderListener($options); // High priority, we assume module autoloading (for FooNamespace\Module // classes) should be available before anything else $moduleLoaderListener->attach($events); $this->listeners[] = $moduleLoaderListener; $this->listeners[] = $events->attach(ModuleEvent::EVENT_LOAD_MODULE_RESOLVE, new ModuleResolverListener()); // High priority, because most other loadModule listeners will assume // the module's classes are available via autoloading $this->listeners[] = $events->attach(ModuleEvent::EVENT_LOAD_MODULE, new AutoloaderListener($options), 9000); if ($options->getCheckDependencies()) { $this->listeners[] = $events->attach(ModuleEvent::EVENT_LOAD_MODULE, new ModuleDependencyCheckerListener(), 8000); } $this->listeners[] = $events->attach(ModuleEvent::EVENT_LOAD_MODULE, new InitTrigger($options)); $this->listeners[] = $events->attach(ModuleEvent::EVENT_LOAD_MODULE, new OnBootstrapListener($options)); $locatorRegistrationListener->attach($events); $configListener->attach($events); $this->listeners[] = $locatorRegistrationListener; $this->listeners[] = $configListener; return $this; }
public function testModuleLoaderListenerFunctionsAsAggregateListenerHasCache() { $options = new ListenerOptions(array('cache_dir' => $this->tmpdir, 'module_map_cache_key' => 'foo', 'module_map_cache_enabled' => true)); file_put_contents($options->getModuleMapCacheFile(), '<?php return array();'); $moduleLoaderListener = new ModuleLoaderListener($options); $moduleManager = $this->moduleManager; $this->assertEquals(1, count($moduleManager->getEventManager()->getListeners(ModuleEvent::EVENT_LOAD_MODULES))); $this->assertEquals(0, count($moduleManager->getEventManager()->getListeners(ModuleEvent::EVENT_LOAD_MODULES_POST))); $moduleLoaderListener->attach($moduleManager->getEventManager()); $this->assertEquals(2, count($moduleManager->getEventManager()->getListeners(ModuleEvent::EVENT_LOAD_MODULES))); $this->assertEquals(0, count($moduleManager->getEventManager()->getListeners(ModuleEvent::EVENT_LOAD_MODULES_POST))); }