Beispiel #1
0
 public function testDispatcherBinding()
 {
     $listener = function () {
         return 'callback';
     };
     $pattern = new ListenerPattern('core.*', $listener, $priority = 0);
     $dispatcher = $this->getMockBuilder(Dispatcher::class)->setMethods(['attach', 'once', 'trigger', 'getListeners', 'detach', 'removeAllListeners', 'hasListeners'])->getMock();
     $dispatcher->expects($this->once())->method('attach')->with('core.request', $listener, $priority);
     $pattern->bind($dispatcher, 'core.request');
     // bind() should avoid adding the listener multiple times to the same event
     $pattern->bind($dispatcher, 'core.request');
 }
Beispiel #2
0
 /**
  * Adds an event listener for all events matching the specified pattern.
  *
  * This method will lazily register the listener when a matching event is
  * dispatched.
  *
  * @param ListenerPattern $pattern
  */
 protected function addListenerPattern(ListenerPattern $pattern)
 {
     $this->patterns[$pattern->getEventPattern()][] = $pattern;
     foreach ($this->syncedEvents as $eventName => $value) {
         if ($pattern->test($eventName)) {
             unset($this->syncedEvents[$eventName]);
         }
     }
 }