コード例 #1
0
ファイル: ContainerBuilder.php プロジェクト: fwk/di
 /**
  * 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));
     }
 }