/** * Dispatches an event to all registered listeners. * * @param string $name * @param mixed $entity * @param Metadata $metadata * @return bool */ public function dispatchEvent($name, $entity, Metadata $metadata) { $prefix = $metadata->getEventPrefix(); $event = new $this->eventClass($entity, $metadata, $this); if ($events = $metadata->getEvents() and isset($events[$name])) { foreach ($events[$name] as $callback) { call_user_func_array([$entity, $callback], [$event]); } } $this->connection->getEventDispatcher()->dispatch(($prefix ? $prefix . '.' : '') . $name, $event); }