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. diff --git a/src/Listener/ResourceParametersListener.php b/src/Listener/ResourceParametersListener.php index b4e1d3ea..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($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); } /**