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; }
public function addListener(Listener $callback) { $type = $callback->getType(); $id = $callback->getId(); if (!isset($this->listeners[$type])) { $this->listeners[$type] = ['id' => [], 'global' => []]; } if ($id) { if (!isset($this->listeners[$type]['id'][$id])) { $this->listeners[$type]['id'][$id] = []; } $this->listeners[$type]['id'][$id][] = $callback; } else { $this->listeners[$type]['global'][] = $callback; } }