Events

All events must extend the Events\Base class.

use GustavPHP\Gustav\Events; class TestEvent extends Events\Base { }

Events can be defined by attaching the Event Attributes to a class.

use GustavPHP\Gustav\Attribute\Event; use GustavPHP\Gustav\Event; #[Event('test')] class TestEvent extends Event\Base { public function handle(Event\Payload $payload): void { $this->log('Event: ' . $payload->getEvent()); } }

Events can be dispatched from anywhere using.

GustavPHP\Gustav\Event\Manager::dispatch('test', [ 'key' => 'value' ]);

Events are automatically added like Routes in the App\Events namespace.