This commit is contained in:
2021-08-25 16:07:04 +08:00
parent 195aca6fc6
commit 77d2803976
4 changed files with 113 additions and 2 deletions
+42
View File
@@ -0,0 +1,42 @@
<?php
namespace Kiri\Events;
use Annotation\Inject;
use Kiri\Abstracts\BaseObject;
use Psr\EventDispatcher\EventDispatcherInterface;
use Psr\EventDispatcher\StoppableEventInterface;
/**
*
*/
class EventDispatch extends BaseObject implements EventDispatcherInterface
{
/**
* @var EventProvider
*/
#[Inject(EventProvider::class)]
public EventProvider $eventProvider;
/**
* @param object $event
* @return object
*/
public function dispatch(object $event): object
{
$lists = $this->eventProvider->getListenersForEvent($event);
foreach ($lists as $listener) {
/** @var Struct $list */
$listener($event);
if ($event instanceof StoppableEventInterface && $event->isPropagationStopped()) {
break;
}
}
return $event;
}
}