cakephp/event
Lightweight event dispatcher for CakePHP apps. Define and fire events, attach listeners/subscribers, and manage propagation and results. Useful for decoupling components and building extensible plugins with a simple, familiar API.
EventManager, EventListener interfaces). Laravel uses its own event system (Illuminate\Events\Dispatcher), making direct integration non-trivial without abstraction layers.Event and EventListener interfaces differ from Laravel’s Event and Listener contracts. Bridging them would require:
EventServiceProvider.Dispatcher expects ShouldDispatchEvents interfaces; CakePHP’s EventDispatcher uses EventListener traits.Event lifecycle (e.g., halt propagation).EventManager middleware) that Laravel lacks?Illuminate\Events is optimized for its ecosystem (e.g., Bus, Queue, Broadcast). Introducing CakePHP’s system adds unnecessary complexity.app()->make(CakeEventDispatcher::class)).Event → Laravel’s Illuminate\Events\Dispatcher::dispatch().Event → CakePHP’s EventManager::dispatch() (if bidirectional).class CakeLaravelEventBridge
{
public function __construct(private EventManager $cakeDispatcher, private Dispatcher $laravelDispatcher) {}
public function dispatchLaravelEvent(string $event, array $data): void
{
$cakeEvent = new Event($event, $data);
$this->cakeDispatcher->dispatch($cakeEvent);
}
}
Event may pull in older versions of Psr\EventDispatcher or cakephp/cakephp. Use composer overrides or platform checks to mitigate.composer.json:
"extra": {
"laravel": {
"dont-discover": ["Cake\\Event\\EventManager"]
}
}
AppServiceProvider.| Failure Scenario | Impact | Mitigation |
|---|---|---|
| CakePHP event listener crashes | Laravel event continues (or fails) | Use try-catch in adapters. |
| Event name collision | Silent failures or duplicate fires | Prefix event names (e.g., cake., laravel.). |
| PHP version incompatibility | Runtime errors | Use composer platform-check. |
| Memory leaks from CakePHP listeners | High RAM usage | Unregister listeners in boot() methods. |
| Laravel’s event system updated | Breaking changes in adapter | Test against Laravel’s beta releases. |
How can I help you explore Laravel packages today?