Example #1
0
 /**
  * Registers the tagged event subscribers.
  *
  * @param ContainerBuilder $builder    The service container builder.
  * @param Definition       $dispatcher The event dispatcher definition.
  *
  * @throws Exception If the subscriber could not be registered.
  */
 private function registerSubscribers(ContainerBuilder $builder, Definition $dispatcher)
 {
     $ids = $builder->findTaggedServiceIds('event.subscriber');
     foreach ($ids as $id => $tags) {
         $subscriber = $builder->getDefinition($id);
         if ($subscriber->isAbstract()) {
             throw Exception::subscriberIsAbstract($id);
         }
         if (!$subscriber->isPublic()) {
             throw Exception::subscriberIsNotPublic($id);
         }
         $reflect = new ReflectionClass($subscriber->getClass());
         if (!$reflect->implementsInterface('Symfony\\Component\\EventDispatcher\\EventSubscriberInterface')) {
             throw Exception::subscriberIsNotSubscriber($id);
         }
         $dispatcher->addMethodCall('addSubscriber', array(new Reference($id)));
     }
 }