/** * Dispatches a new event to all configured listeners * * @param string|CakeEvent $event the event key name or instance of CakeEvent * @return void */ public function dispatch($event) { if (is_string($event)) { $event = new LocalEvent($event); } if (empty($this->_listeners[$event->name()])) { return; } foreach ($this->listeners($event->name()) as $listener) { if ($event->isStopped()) { break; } $result = call_user_func($listener['callable'], $event); if ($result === false) { $event->stopPropagation(); } if ($result !== null) { $event->result = $result; } continue; } }