From 12d41f1d00b03f0450d5610eb49ef31e4bdddab6 Mon Sep 17 00:00:00 2001 From: Zacharias Luiten Date: Fri, 6 Sep 2013 12:25:14 +0200 Subject: [PATCH 1/3] missing paramater when detaching shared event --- src/Listener/ResourceParametersListener.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Listener/ResourceParametersListener.php b/src/Listener/ResourceParametersListener.php index b4e1d3ea..9dbd7acd 100644 --- a/src/Listener/ResourceParametersListener.php +++ b/src/Listener/ResourceParametersListener.php @@ -63,7 +63,7 @@ public function attachShared(SharedEventManagerInterface $events) public function detachShared(SharedEventManagerInterface $events) { foreach ($this->sharedListeners as $index => $listener) { - if ($events->detach($listener)) { + if ($events->detach(ResourceController::class, $listener)) { unset($this->sharedListeners[$index]); } } From 03d848bc740df3869b2d1b7660c053abc1eaf62f Mon Sep 17 00:00:00 2001 From: Matthew Weier O'Phinney Date: Thu, 26 May 2016 14:13:49 -0500 Subject: [PATCH 2/3] Remove SharedListenerAggregateInterface implementation - Per the zend-eventmanager migration guide, this particular interface goes away starting with v3. To make the code forwards compatible: - Remove the interface implementation from the class, but leave the methods that implemented it. - Update where it's attached to instead pass the shared events as an argument to the listener's attachShared/detachShared methods. - detachShared() now needs to vary based on the SharedEventManager version in play. --- src/Listener/ResourceParametersListener.php | 16 +++++++++++----- src/Module.php | 2 +- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/Listener/ResourceParametersListener.php b/src/Listener/ResourceParametersListener.php index 9dbd7acd..422fa6ea 100644 --- a/src/Listener/ResourceParametersListener.php +++ b/src/Listener/ResourceParametersListener.php @@ -12,12 +12,9 @@ use Zend\EventManager\EventManagerInterface; use Zend\EventManager\ListenerAggregateInterface; use Zend\EventManager\SharedEventManagerInterface; -use Zend\EventManager\SharedListenerAggregateInterface; use Zend\Mvc\MvcEvent; -class ResourceParametersListener implements - ListenerAggregateInterface, - SharedListenerAggregateInterface +class ResourceParametersListener implements ListenerAggregateInterface { /** * @var \Zend\Stdlib\CallbackHandler[] @@ -62,8 +59,17 @@ public function attachShared(SharedEventManagerInterface $events) */ public function detachShared(SharedEventManagerInterface $events) { + // Vary detachment based on zend-eventmanager version. + $detach = method_exists($events, 'attachAggregate') + ? function ($listener) use ($events) { + return $events->detach(ResourceController::class, $listener); + } + : function ($listener) use ($events) { + return $events->detach($listener, ResourceController::class); + }; + foreach ($this->sharedListeners as $index => $listener) { - if ($events->detach(ResourceController::class, $listener)) { + if ($detach($listener)) { unset($this->sharedListeners[$index]); } } diff --git a/src/Module.php b/src/Module.php index a84762fe..940abaff 100644 --- a/src/Module.php +++ b/src/Module.php @@ -206,7 +206,7 @@ public function onBootstrap($e) $eventManager = $e->getApplication()->getEventManager(); $eventManager->attach($services->get(ApiProblemListener::class)); }, 300); - $sharedEvents->attachAggregate($services->get('PhlyRestfully\ResourceParametersListener')); + $services->get('PhlyRestfully\ResourceParametersListener')->attachShared($sharedEvents); } /** From 3b068e076578b62eba7207fe83df7041234adb29 Mon Sep 17 00:00:00 2001 From: Matthew Weier O'Phinney Date: Thu, 26 May 2016 14:20:58 -0500 Subject: [PATCH 3/3] Added CHANGELOG for #104 --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e2b5d5ed..d9d4c4c2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,3 +30,5 @@ All notable changes to this project will be documented in this file, in reverse - [#97](https://github.com/phly/PhlyRestfully/pull/97) fixes the identifier comparison in `ResourceController::getIdentifier()` to use a strict comparison to boolean false, and thus allow identifiers of `0`. +- [#104](https://github.com/phly/PhlyRestfully/pull/104) corrects the logic in + `ResourceParametersListener::detachShared` to pass the identifier.