_listeners[get_class($event)] ?? [] as $listener) { $queue->insert($listener->listener, $listener->priority); } return $queue; } /** * @param string $event * @param callable $handler * @param int $zOrder */ public function on(string $event, callable $handler, int $zOrder = 1) { $this->_listeners[$event][] = new Struct($event, $handler, $zOrder); } /** * @param string $event * @param callable $handler * @return void */ public function off(string $event, callable $handler) { $events = $this->_listeners[$event] ?? []; $this->_listeners[$event] = array_filter($events, function ($value) use ($handler) { return $value->listener !== $handler; }); } }