/** * Converts XML definitions from parsing results * * @param array $listeners Parsing results * @param Container $container The Di Container * * @return void */ protected function applyListeners(array $listeners, Container $container) { foreach ($listeners as $infos) { $class = $infos['class']; $service = $infos['service']; if (empty($class) && empty($service)) { throw new Exception('Invalid Xml Listener: either "class" or "service" attribute must be defined.'); } if (!empty($class)) { $def = new ClassDefinition($class); $container->addListener($def->invoke($container)); continue; } if (!$container->has($service)) { throw new Exception(sprintf('Invalid Xml Listener service ID: "%s"', $service)); } $container->addListener($container->get($service)); } }