puff / event
Synchronous, type-safe in-process domain events for Puff
Requires
- php: ^8.2
- puff/console: dev-main
- puff/di: dev-main
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.22
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^11.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-09-16 15:43:36 UTC
README
puff/event is a synchronous, type-safe, in-process domain event dispatcher.
use Puff\Event\Dispatcher; use Puff\Event\Listener; final readonly class UserRegistered { public function __construct(public string $id) { } } final class WriteAuditLog implements Listener { public function handle(object $event): void { if (!$event instanceof UserRegistered) { return; } // Write the audit log. } } $events->listen(UserRegistered::class, WriteAuditLog::class); $events->dispatch(new UserRegistered('user-1'));
The dispatcher is registered automatically through Composer discovery. Inject
Puff\Event\Dispatcher into services or register listeners from an application
service provider.
Listeners run synchronously in registration order. An exception stops dispatch
and is propagated to the caller. The component does not provide queues, retries,
durable delivery, delayed events or cross-process messaging; use puff/job for
background work.
Generate an event
./puff event UserRegistered
./puff event TokenIssued App\\Event
The first command creates event/UserRegistered.php. Use --force to
replace an existing generated class.