diff --git a/composer.json b/composer.json index 23bb973..5b33e6e 100644 --- a/composer.json +++ b/composer.json @@ -11,11 +11,11 @@ "require": { "php": ">=8.0", "ext-json": "*", - "psr/http-message": "^1.0" + "psr/event-dispatcher": "^1.0" }, "autoload": { "psr-4": { - "HttpMessage\\": "src/" + "Kiri\\Events\\": "src/" } }, "require-dev": { diff --git a/src/EventDispatch.php b/src/EventDispatch.php new file mode 100644 index 0000000..cc5d014 --- /dev/null +++ b/src/EventDispatch.php @@ -0,0 +1,42 @@ +eventProvider->getListenersForEvent($event); + foreach ($lists as $listener) { + /** @var Struct $list */ + $listener($event); + if ($event instanceof StoppableEventInterface && $event->isPropagationStopped()) { + break; + } + } + return $event; + } + + +} diff --git a/src/EventProvider.php b/src/EventProvider.php new file mode 100644 index 0000000..a025524 --- /dev/null +++ b/src/EventProvider.php @@ -0,0 +1,44 @@ +_listeners[get_class($event)] ?? [] as $listener) { + $queue->insert($listener->listener, $listener->priority); + } + return $queue; + } + + + /** + * @param string $event + * @param callable $handler + * @param int $zOrder + */ + public function on(string $event, callable $handler, int $zOrder = 1) + { + $this->_listeners[$event][] = new Struct($event, $handler, $zOrder); + } + + +} diff --git a/src/Struct.php b/src/Struct.php new file mode 100644 index 0000000..a4fd639 --- /dev/null +++ b/src/Struct.php @@ -0,0 +1,25 @@ +event = $event; + $this->listener = $listener; + $this->priority = $priority; + } +}