> */ protected array $listeners = []; /** * Register an event listener. */ public function on(string $event, Closure $callback): void { $this->listeners[$event][] = $callback; } /** * Emit an event. */ public function emit(string $event, mixed ...$data): void { foreach ($this->listeners[$event] ?? [] as $listener) { $listener(...$data); } } }