/** * Dispatches an event to all registered listeners. * * @param string $eventName The name of the event to dispatch. The name of * the event is the name of the method that is * invoked on listeners. * @param Event $event The event to pass to the event handlers/listeners. * If not supplied, an empty Event instance is created. * * @return Event * * @api */ public function dispatch($eventName, Event $event = null) { if ($event == null) { $event = new Event(); } $event->setName($eventName); $event->setDispatcher($this); $this->laravelDispatcher->fire($eventName, $event); $this->symfonyDispatcher->dispatch($eventName, $event); $event->setDispatcher($this); return $event; }
public function testSetDispatcher() { $this->event->setDispatcher($this->dispatcher); $this->assertSame($this->dispatcher, $this->event->getDispatcher()); }
/** * @param Event $event * @param string $eventName * @param EventDispatcherInterface $dispatcher * * @return void */ public function onEvent(Event $event, $eventName, EventDispatcherInterface $dispatcher) { if ($this->opponentPID === null) { return; } $event->setDispatcher(new TransportableEventDispatcher()); $serialized = serialize($event); $sendData = pack('S', strlen($eventName)) . $eventName . pack('N', strlen($serialized)) . $serialized . pack('S', $this->getDispatcherId($dispatcher)); if (fwrite($this->bridge[$this->mode], $sendData) === false) { throw new \RuntimeException('Could not write event to socket.'); } $this->sendPollSignal(); }
public function testLegacySetDispatcher() { $this->iniSet('error_reporting', -1 & ~E_USER_DEPRECATED); $this->event->setDispatcher($this->dispatcher); $this->assertSame($this->dispatcher, $this->event->getDispatcher()); }
public function testHasListenersOnLazyLoad() { $event = new Event(); $service = $this->getMock('Symfony\\Component\\EventDispatcher\\Tests\\Service'); $container = new Container(); $container->set('service.listener', $service); $dispatcher = new ContainerAwareEventDispatcher($container); $dispatcher->addListenerService('onEvent', array('service.listener', 'onEvent')); $event->setDispatcher($dispatcher); $event->setName('onEvent'); $service->expects($this->once())->method('onEvent')->with($event); $this->assertTrue($dispatcher->hasListeners()); if ($dispatcher->hasListeners('onEvent')) { $dispatcher->dispatch('onEvent'); } }
/** * {@inheritdoc} */ public function dispatch($event_name, Event $event = NULL) { if ($event === NULL) { $event = new Event(); } $event->setDispatcher($this); $event->setName($event_name); if (isset($this->listeners[$event_name])) { // Sort listeners if necessary. if (isset($this->unsorted[$event_name])) { krsort($this->listeners[$event_name]); unset($this->unsorted[$event_name]); } // Invoke listeners and resolve callables if necessary. foreach ($this->listeners[$event_name] as $priority => &$definitions) { foreach ($definitions as $key => &$definition) { if (!isset($definition['callable'])) { $definition['callable'] = [$this->container->get($definition['service'][0]), $definition['service'][1]]; } $definition['callable']($event, $event_name, $this); if ($event->isPropagationStopped()) { return $event; } } } } return $event; }
public function testHasListenersOnLazyLoad() { $event = new Event(); $service = $this->getMock('SilexCMF\\Core\\Tests\\Service'); $container = new Application(); $container['service.listener'] = Application::share(function () use($service) { return $service; }); $dispatcher = new PimpleAwareEventDispatcher(); $dispatcher->setContainer($container); $dispatcher->addListenerService('onEvent', ['service.listener', 'onEvent']); $event->setDispatcher($dispatcher); $event->setName('onEvent'); $service->expects(static::once())->method('onEvent')->with($event); static::assertTrue($dispatcher->hasListeners()); if ($dispatcher->hasListeners('onEvent')) { $dispatcher->dispatch('onEvent'); } }