devcoder-xyz / php-event-dispatcher
A simple PSR-14 event dispatcher
Installs: 68
Dependents: 1
Suggesters: 0
Security: 0
Stars: 7
Watchers: 0
Forks: 4
Open Issues: 0
Type:package
Requires
- php: >=7.2
- psr/event-dispatcher: ^1.0
Requires (Dev)
- phpunit/phpunit: ^8.1
This package is auto-updated.
Last update: 2024-04-28 19:04:10 UTC
README
Create an Event
<?php namespace App\Event; use App\Entity\User; use DevCoder\Listener\Event; /** * Class PreCreateEvent * @package App\Event */ class PreCreateEvent extends Event { /** * @var object */ private $object; /** * PreCreateEvent constructor. * @param object $object */ public function __construct(object $object) { $this->object = $object; } /** * @return object */ public function getObject(): object { return $this->object; } }
Create listener
<?php namespace App\Listener; use App\Entity\User; use App\Event\PreCreateEvent; /** * Class SecurityListener * @package App\Listener */ class UserListener { /** * @param PreCreateEvent $event */ public function __invoke(PreCreateEvent $event): void { $object = $event->getObject(); if ($object instanceof User) { // do something } } }
How to use ?
$listenerProvider = (new ListenerProvider()) ->addListener(PreCreateEvent::class, new UserListener()); $dispatcher = new EventDispatcher($listenerProvider); // After flush user in database send event $dispatcher = new EventDispatcher($listenerProvider); $dispatcher->dispatch(new PreCreateEvent($user));
UserListener::class will be automatically call