devcoder-xyz / php-event-dispatcher
简单的PSR-14事件分发器
1.0.0
2021-01-24 14:49 UTC
Requires
- php: >=7.2
- psr/event-dispatcher: ^1.0
Requires (Dev)
- phpunit/phpunit: ^8.1
This package is auto-updated.
Last update: 2024-08-28 19:38:59 UTC
README
创建事件
<?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; } }
创建监听器
<?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 } } }
如何使用?
$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 将自动调用