eZ\Bundle\EzPublishCoreBundle\DependencyInjection\Compiler\SignalSlotPass::process PHP Метод

process() публичный Метод

public process ( ContainerBuilder $container )
$container Symfony\Component\DependencyInjection\ContainerBuilder
    public function process(ContainerBuilder $container)
    {
        if (!$container->hasDefinition('ezpublish.signalslot.signal_dispatcher')) {
            return;
        }
        $signalDispatcherDef = $container->getDefinition('ezpublish.signalslot.signal_dispatcher');
        foreach ($container->findTaggedServiceIds('ezpublish.api.slot') as $id => $attributes) {
            foreach ($attributes as $attribute) {
                if (!isset($attribute['signal'])) {
                    throw new LogicException("Could not find 'signal' attribute on '{$id}' service, which is mandatory for services tagged as 'ezpublish.api.slot'");
                }
                $signalDispatcherDef->addMethodCall('attach', array($attribute['signal'], new Reference($id)));
            }
        }
    }

Usage Example

Пример #1
0
 /**
  * @expectedException \LogicException
  */
 public function testProcessNoSignal()
 {
     $slotDef = new Definition();
     $slotDef->addTag('ezpublish.api.slot', array());
     $containerBuilder = new ContainerBuilder();
     $containerBuilder->addDefinitions(array('acme.foo_slot' => $slotDef, 'ezpublish.signalslot.signal_dispatcher' => new Definition()));
     $pass = new SignalSlotPass();
     $pass->process($containerBuilder);
 }
SignalSlotPass