Example #1
0
 public function bind(Listener $listener)
 {
     if (!$this->_listeners[$listener->getId()]) {
         $this->_listeners[$listener->getId()] = [];
     }
     $pos = count($this->_listeners[$listener->getId()]);
     foreach ($this->_listeners[$listener->getId()] as $k => $v) {
         if ($v->priority > $listener->getPriority()) {
             $pos = $k;
             break;
         }
     }
     array_splice($this->_listeners[$listener->getId()], $pos, 0, [$listener]);
     return $this;
 }
Example #2
0
 /**
  * @param RegisteredListener|Listener|Plugin $object
  */
 public function unregister($object)
 {
     if ($object instanceof Plugin or $object instanceof Listener) {
         $changed = \false;
         foreach ($this->handlerSlots as $priority => $list) {
             foreach ($list as $hash => $listener) {
                 if ($object instanceof Plugin and $listener->getPlugin() === $object or $object instanceof Listener and $listener->getListener() === $object) {
                     unset($this->handlerSlots[$priority][$hash]);
                     $changed = \true;
                 }
             }
         }
         if ($changed === \true) {
             $this->handlers = \null;
         }
     } elseif ($object instanceof RegisteredListener) {
         if (isset($this->handlerSlots[$object->getPriority()][\spl_object_hash($object)])) {
             unset($this->handlerSlots[$object->getPriority()][\spl_object_hash($object)]);
             $this->handlers = \null;
         }
     }
 }