dakwamine / container-aware-event-dispatcher
Simple event dispatcher compliant with PSR-14 and using PSR-11 containers.
1.0.0
2021-04-13 20:19 UTC
Requires
- php: >=7.2
- psr/container: ^2.0
- psr/event-dispatcher: ^1.0
This package is auto-updated.
Last update: 2024-04-14 03:38:37 UTC
README
A simple event dispatcher which works with "psr/container": "^2.0"
and "psr/event-dispatcher": "^1.0"
.
Basic usage
<?php class SomeEvent implements \Dakwamine\Event\EventInterface { const EVENT_NAME = 'Any string'; public function getName(){ return static::EVENT_NAME; } } class SomeEventListener implements \Dakwamine\Event\EventListenerInterface { public function handleEvent(\Dakwamine\Event\EventInterface $event) { // Do stuff related to $event, like dispatching to other methods. if ($event->getName() === SomeEvent::EVENT_NAME) { // ... } } } // The container. $container = new \League\Container\Container(); // Add the listener to the container. $container->share(SomeEventListener::class); // This object holds the lists of class names per event. $listenerProvider = new \Dakwamine\Event\ContainerAwareListenerProvider($container); // Register the listener. Optionally set the priority. $listenerProvider->addListener(SomeEvent::EVENT_NAME, SomeEventListener::class, 42); // Dispatch the event. Listeners will be instantiated using the container by the listener provider. $eventDispatcher = new \Dakwamine\Event\EventDispatcher($listenerProvider); $eventDispatcher->dispatch(new SomeEvent());