denosyscore / events
Event dispatching and listener provider components
v0.22.0
2026-11-13 14:02 UTC
Requires
- php: ^8.2
- psr/container: ^2.0
- psr/event-dispatcher: ^1.0
Requires (Dev)
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^11.5
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Read-only split. This package is developed in denosyscore/framework under
packages/events. Open issues and pull requests there.
Event dispatching and listener provider components
Installation
composer require denosyscore/events
Quick start
A PSR-14 event dispatcher. It needs no container or configuration.
<?php require __DIR__ . '/vendor/autoload.php'; use Denosys\Events\Dispatcher; use Denosys\Events\ListenerProvider; final class OrderPlaced { public function __construct(public readonly int $orderId) {} } $listeners = new ListenerProvider(); $listeners->addListener(OrderPlaced::class, function (OrderPlaced $event): void { echo "Send receipt for order {$event->orderId}\n"; }); // A PSR-14 dispatcher: any listener provider and any event object. $events = new Dispatcher($listeners); $events->dispatch(new OrderPlaced(1001)); // Send receipt for order 1001
Class listeners
Register an invokable class instead of a callable to build the listener, and its dependencies, only when its event is dispatched. The provider resolves it from any PSR-11 container:
$listeners = new ListenerProvider($container); $listeners->on(OrderPlaced::class, SendReceipt::class); // built on dispatch
A class listener without a container, or a class without __invoke, is
rejected when it is registered.
Included Modules
- src/Events/* (legacy namespace)
- src/.php for Denosys\Events\ extracted namespace
Development
composer validate --strict find src -type f -name '*.php' -print0 | xargs -0 -n1 php -l