/** * @param Event $event */ public function emit(Event $event) { $event->onEmit(); if ($this->listeners) { if (isset($this->listeners[$event->getName()])) { foreach ($this->listeners[$event->getName()] as $listener) { call_user_func($listener, $event); } } } // call class listeners if ($this->classListeners) { foreach ($this->getParentClasses(get_class($event)) as $class) { if (isset($this->classListeners[$class])) { foreach ($this->classListeners[$class] as $listener) { call_user_func($listener, $event); } } } } }