From e5019870b4ca398cc6417fcc4042ab96a1c6c096 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Hu=C4=8D=C3=ADk?= Date: Thu, 30 Jan 2025 10:51:20 +0100 Subject: [PATCH 1/7] Fix: PHP 8.3 compatibility --- src/Doctrine/aliases.php | 8 ++++---- src/Events/EventManager.php | 14 +++++++------- src/Events/NamespacedEventManager.php | 6 +++--- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/Doctrine/aliases.php b/src/Doctrine/aliases.php index 35951e5..1a321ce 100644 --- a/src/Doctrine/aliases.php +++ b/src/Doctrine/aliases.php @@ -13,17 +13,17 @@ class EventArgs { } abstract class EventManager { - public function addEventSubscriber(EventSubscriber $subscriber) { + public function addEventSubscriber(EventSubscriber $subscriber): void { $this->addEventListener($subscriber->getSubscribedEvents(), $subscriber); } - public function removeEventSubscriber(EventSubscriber $subscriber) { + public function removeEventSubscriber(EventSubscriber $subscriber): void { $this->removeEventListener($subscriber->getSubscribedEvents(), $subscriber); } - abstract public function addEventListener($events, $listener); + abstract public function addEventListener(string|array $events, object $listener): void; - abstract public function removeEventListener($events, $listener = NULL); + abstract public function removeEventListener(string|array $events, object $listener = NULL): void; } interface EventSubscriber { diff --git a/src/Events/EventManager.php b/src/Events/EventManager.php index cd7be64..8649216 100644 --- a/src/Events/EventManager.php +++ b/src/Events/EventManager.php @@ -75,7 +75,7 @@ public function setExceptionHandler(IExceptionHandler $exceptionHandler) * @param string $eventName The name of the event to dispatch. The name of the event is the name of the method that is invoked on listeners. * @param \Doctrine\Common\EventArgs $eventArgs The event arguments to pass to the event handlers/listeners. If not supplied, the single empty EventArgs instance is used */ - public function dispatchEvent($eventName, DoctrineEventArgs $eventArgs = NULL) + public function dispatchEvent(string $eventName, ?DoctrineEventArgs $eventArgs = NULL): void { if ($this->panel) { $this->panel->eventDispatch($eventName, $eventArgs); @@ -118,7 +118,7 @@ public function dispatchEvent($eventName, DoctrineEventArgs $eventArgs = NULL) * @param string|null $eventName * @return \Doctrine\Common\EventSubscriber[]|callable[]|\Doctrine\Common\EventSubscriber[][]|callable[][] */ - public function getListeners($eventName = NULL) + public function getListeners(string $eventName = NULL): array { if ($eventName !== NULL) { if (!isset($this->sorted[$eventName])) { @@ -143,7 +143,7 @@ public function getListeners($eventName = NULL) * @param string|null $eventName * @return bool TRUE if the specified event has any listeners, FALSE otherwise. */ - public function hasListeners($eventName) + public function hasListeners(string $eventName): bool { return (bool) count($this->getListeners($eventName)); } @@ -156,7 +156,7 @@ public function hasListeners($eventName) * @param int $priority * @throws \Kdyby\Events\InvalidListenerException */ - public function addEventListener($events, $subscriber, $priority = 0) + public function addEventListener(string|array $events, object $subscriber, $priority = 0): void { foreach ((array) $events as $eventName) { [, $event] = Event::parseName($eventName); @@ -184,7 +184,7 @@ public function addEventListener($events, $subscriber, $priority = 0) * @param \Doctrine\Common\EventSubscriber|\Closure|array|string $unsubscribe * @param \Doctrine\Common\EventSubscriber|\Closure|array $subscriber */ - public function removeEventListener($unsubscribe, $subscriber = NULL) + public function removeEventListener(string|array $unsubscribe, object $subscriber = NULL): void { if ($unsubscribe instanceof EventSubscriber) { [$unsubscribe, $subscriber] = $this->extractSubscriber($unsubscribe); @@ -272,7 +272,7 @@ protected function extractCallable(callable $subscriber) /** * {@inheritdoc} */ - public function addEventSubscriber(EventSubscriber $subscriber) + public function addEventSubscriber(EventSubscriber $subscriber): void { $hash = spl_object_hash($subscriber); if (isset($this->subscribers[$hash])) { @@ -303,7 +303,7 @@ public function addEventSubscriber(EventSubscriber $subscriber) /** * {@inheritdoc} */ - public function removeEventSubscriber(EventSubscriber $subscriber) + public function removeEventSubscriber(EventSubscriber $subscriber): void { $this->removeEventListener($subscriber); } diff --git a/src/Events/NamespacedEventManager.php b/src/Events/NamespacedEventManager.php index fc94b05..4d78866 100644 --- a/src/Events/NamespacedEventManager.php +++ b/src/Events/NamespacedEventManager.php @@ -40,7 +40,7 @@ public function __construct($namespace, EventManager $eventManager) /** * {@inheritDoc} */ - public function dispatchEvent($eventName, DoctrineEventArgs $eventArgs = NULL) + public function dispatchEvent(string $eventName, ?DoctrineEventArgs $eventArgs = NULL): void { [$ns, $event] = Event::parseName($eventName); @@ -54,7 +54,7 @@ public function dispatchEvent($eventName, DoctrineEventArgs $eventArgs = NULL) /** * {@inheritDoc} */ - public function getListeners($eventName = NULL) + public function getListeners(string $eventName = null): array { if ($eventName === NULL) { $listeners = []; @@ -83,7 +83,7 @@ public function getListeners($eventName = NULL) /** * {@inheritDoc} */ - public function hasListeners($eventName) + public function hasListeners(string $eventName): bool { [$ns, $event] = Event::parseName($eventName); From 727193b339644cb939f9dc5f9e34a0a74c04f3a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Hu=C4=8D=C3=ADk?= Date: Thu, 30 Jan 2025 13:59:34 +0100 Subject: [PATCH 2/7] Fix: PHP 8.3 compatibility --- src/Events/NamespacedEventManager.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Events/NamespacedEventManager.php b/src/Events/NamespacedEventManager.php index 4d78866..4fafda2 100644 --- a/src/Events/NamespacedEventManager.php +++ b/src/Events/NamespacedEventManager.php @@ -97,7 +97,7 @@ public function hasListeners(string $eventName): bool /** * {@inheritDoc} */ - public function addEventListener($events, $subscriber, $priority = 0) + public function addEventListener(string|array $events, object $subscriber, $priority = 0): void { foreach ((array) $events as $eventName) { [$ns, $event] = Event::parseName($eventName); From f3f460d61ebc901c1b6a6ca35bd827a2a6301fe7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Hu=C4=8D=C3=ADk?= Date: Thu, 30 Jan 2025 14:09:14 +0100 Subject: [PATCH 3/7] Fix: PHP 8.3 compatibility --- src/Events/NamespacedEventManager.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Events/NamespacedEventManager.php b/src/Events/NamespacedEventManager.php index 4fafda2..c2fb02f 100644 --- a/src/Events/NamespacedEventManager.php +++ b/src/Events/NamespacedEventManager.php @@ -108,7 +108,7 @@ public function addEventListener(string|array $events, object $subscriber, $prio /** * {@inheritDoc} */ - public function removeEventListener($unsubscribe, $subscriber = NULL) + public function removeEventListener(string|array $unsubscribe, object $subscriber = NULL): void { if ($unsubscribe instanceof EventSubscriber) { $subscriber = $unsubscribe; From d46423bdaf1fbf34ea440e29907bc5a26b34140c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Hu=C4=8D=C3=ADk?= Date: Thu, 30 Jan 2025 14:28:08 +0100 Subject: [PATCH 4/7] Fix: PHP 8.3 compatibility --- src/Events/LazyEventManager.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Events/LazyEventManager.php b/src/Events/LazyEventManager.php index e635c08..e77ef6e 100644 --- a/src/Events/LazyEventManager.php +++ b/src/Events/LazyEventManager.php @@ -50,7 +50,7 @@ public function setPanel(Panel $panel) /** * {@inheritdoc} */ - public function getListeners($eventName = NULL) + public function getListeners(string $eventName = NULL): array { if ($eventName === NULL) { while (($type = key($this->listenerIds)) !== NULL) { @@ -67,7 +67,7 @@ public function getListeners($eventName = NULL) /** * {@inheritdoc} */ - public function removeEventListener($unsubscribe, $subscriber = NULL) + public function removeEventListener(string|array $unsubscribe, object $subscriber = NULL): void { if ($unsubscribe instanceof EventSubscriber) { [$unsubscribe, $subscriber] = $this->extractSubscriber($unsubscribe); From d4583efc17b490adbf1bca130b5de21cbd2d2eab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Hu=C4=8D=C3=ADk?= Date: Fri, 31 Jan 2025 08:26:43 +0100 Subject: [PATCH 5/7] Fix: PHP 8.3 compatibility --- src/Events/EventManager.php | 10 +++------- src/Events/LazyEventManager.php | 6 ------ src/Events/NamespacedEventManager.php | 18 +----------------- 3 files changed, 4 insertions(+), 30 deletions(-) diff --git a/src/Events/EventManager.php b/src/Events/EventManager.php index 8649216..4496f0f 100644 --- a/src/Events/EventManager.php +++ b/src/Events/EventManager.php @@ -186,12 +186,6 @@ public function addEventListener(string|array $events, object $subscriber, $prio */ public function removeEventListener(string|array $unsubscribe, object $subscriber = NULL): void { - if ($unsubscribe instanceof EventSubscriber) { - [$unsubscribe, $subscriber] = $this->extractSubscriber($unsubscribe); - } elseif ($unsubscribe instanceof Closure) { - [$unsubscribe, $subscriber] = $this->extractCallable($unsubscribe); - } - foreach ((array) $unsubscribe as $eventName) { $eventName = ltrim($eventName, '\\'); foreach ($this->listeners[$eventName] as $priority => $listeners) { @@ -305,7 +299,9 @@ public function addEventSubscriber(EventSubscriber $subscriber): void */ public function removeEventSubscriber(EventSubscriber $subscriber): void { - $this->removeEventListener($subscriber); + [$unsubscribe, $subscriber] = $this->extractSubscriber($subscriber); + + $this->removeEventListener($unsubscribe, $subscriber); } /** diff --git a/src/Events/LazyEventManager.php b/src/Events/LazyEventManager.php index e77ef6e..f106f08 100644 --- a/src/Events/LazyEventManager.php +++ b/src/Events/LazyEventManager.php @@ -69,12 +69,6 @@ public function getListeners(string $eventName = NULL): array */ public function removeEventListener(string|array $unsubscribe, object $subscriber = NULL): void { - if ($unsubscribe instanceof EventSubscriber) { - [$unsubscribe, $subscriber] = $this->extractSubscriber($unsubscribe); - } elseif ($unsubscribe instanceof Closure) { - [$unsubscribe, $subscriber] = $this->extractCallable($unsubscribe); - } - foreach ((array) $unsubscribe as $eventName) { if (array_key_exists($eventName, $this->listenerIds)) { $this->initializeListener($eventName); diff --git a/src/Events/NamespacedEventManager.php b/src/Events/NamespacedEventManager.php index c2fb02f..5dff5c0 100644 --- a/src/Events/NamespacedEventManager.php +++ b/src/Events/NamespacedEventManager.php @@ -110,28 +110,12 @@ public function addEventListener(string|array $events, object $subscriber, $prio */ public function removeEventListener(string|array $unsubscribe, object $subscriber = NULL): void { - if ($unsubscribe instanceof EventSubscriber) { - $subscriber = $unsubscribe; - $unsubscribe = []; - - foreach ($subscriber->getSubscribedEvents() as $eventName => $params) { - if ((is_array($params) && is_array($params[0])) || !is_numeric($eventName)) { - // [EventName => [[method, priority], ...], ...] - // [EventName => [method, priority], ...] && [EventName => method, . - $unsubscribe[] = $eventName; - - } else { // [EventName, ...] - $unsubscribe[] = $params; - } - } - } - $unsubscribe = array_map(function ($eventName) { [$ns, $event] = Event::parseName($eventName); return $ns === NULL ? $this->namespace . $event : $eventName; }, (array) $unsubscribe); - $this->evm->removeEventListener($unsubscribe, $subscriber); + $this->evm->removeEventListener($unsubscribe, $subscriber); } /** From 2bcfc1a8e4b67b9730ab5cdebdf0fc15cf43c71e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Hu=C4=8D=C3=ADk?= Date: Mon, 20 Oct 2025 10:46:51 +0200 Subject: [PATCH 6/7] fix --- src/Events/DI/EventsExtension.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Events/DI/EventsExtension.php b/src/Events/DI/EventsExtension.php index 858999a..a2105c6 100644 --- a/src/Events/DI/EventsExtension.php +++ b/src/Events/DI/EventsExtension.php @@ -407,14 +407,14 @@ protected function bindEventProperties(Definition $def, \ReflectionClass $class) } $dispatchAnnotation = self::propertyHasAnnotation($property, 'globalDispatchFirst'); - $def->addSetup('$' . $name, [ + $def->addSetup('$' . $name, [[ new Statement($this->prefix('@manager') . '::createEvent', [ [$class->getName(), $name], new PhpLiteral('$service->' . $name), NULL, $dispatchAnnotation ?? $this->loadedConfig['globalDispatchFirst'], ]), - ]); + ]]); } } From 567803659180b3b82b4b34caab92628b4fb9633b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Hu=C4=8D=C3=ADk?= Date: Mon, 20 Oct 2025 11:03:20 +0200 Subject: [PATCH 7/7] fix --- src/Events/DI/EventsExtension.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Events/DI/EventsExtension.php b/src/Events/DI/EventsExtension.php index a2105c6..858999a 100644 --- a/src/Events/DI/EventsExtension.php +++ b/src/Events/DI/EventsExtension.php @@ -407,14 +407,14 @@ protected function bindEventProperties(Definition $def, \ReflectionClass $class) } $dispatchAnnotation = self::propertyHasAnnotation($property, 'globalDispatchFirst'); - $def->addSetup('$' . $name, [[ + $def->addSetup('$' . $name, [ new Statement($this->prefix('@manager') . '::createEvent', [ [$class->getName(), $name], new PhpLiteral('$service->' . $name), NULL, $dispatchAnnotation ?? $this->loadedConfig['globalDispatchFirst'], ]), - ]]); + ]); } }