diff --git a/lib/Predis/PubSub/DispatcherLoop.php b/lib/Predis/PubSub/DispatcherLoop.php index e2455a00..d6f4ae20 100644 --- a/lib/Predis/PubSub/DispatcherLoop.php +++ b/lib/Predis/PubSub/DispatcherLoop.php @@ -96,8 +96,10 @@ class DispatcherLoop */ public function attachCallback($channel, $callback) { + $callbackName = $this->getPrefixKeys() . $channel; + $this->validateCallback($callback); - $this->callbacks[$channel] = $callback; + $this->callbacks[$callbackName] = $callback; $this->pubSubContext->subscribe($channel); } @@ -108,8 +110,10 @@ class DispatcherLoop */ public function detachCallback($channel) { - if (isset($this->callbacks[$channel])) { - unset($this->callbacks[$channel]); + $callbackName = $this->getPrefixKeys() . $channel; + + if (isset($this->callbacks[$callbackName])) { + unset($this->callbacks[$callbackName]); $this->pubSubContext->unsubscribe($channel); } } @@ -148,4 +152,16 @@ class DispatcherLoop { $this->pubSubContext->closeContext(); } + + /** + * Return the prefix of the keys + * + * @return string + */ + protected function getPrefixKeys() + { + $prefix = $this->client->getOptions()->prefix; + + return $prefix ? $prefix->getPrefix() : ''; + } }