public function detach(SubscriberInterface $subscriber) { foreach ($subscriber->getEvents() as $eventName => $listener) { $this->removeListener($eventName, [$subscriber, $listener[0]]); } }
/** * @param SubscriberInterface $sub * * @return MediatorInterface Fluent interface * @throws \DomainException * @throws \InvalidArgumentException * @throws \LengthException */ public function removeSubscriber(SubscriberInterface $sub) : MediatorInterface { return $this->removeListenersByEventList($sub->getSubscribedEvents()); }
/** * 解绑订阅者 * @param SubscriberInterface $subscriber */ function removeSubscriber(SubscriberInterface $subscriber) { foreach ($subscriber->getEvents() as $eventName => $method) { $this->unbind($eventName, [$subscriber, $method]); } }
/** * Adds a subscriber to this dispatcher which in its turn adds all the subscribed events. * * @param SubscriberInterface $subscriber The subscriber which can subscribe to multiple events */ public function addSubscriber(SubscriberInterface $subscriber) { foreach ($subscriber->getSubscribedEvents() as $eventName => $callable) { $this->addListener($eventName, $callable); } }
/** * Removes an event subscriber. * * @param SubscriberInterface $subscriber The subscriber. * * @return void * * @since __DEPLOY_VERSION__ */ public function removeSubscriber(SubscriberInterface $subscriber) { foreach ($subscriber->getSubscribedEvents() as $eventName => $params) { if (is_array($params)) { $this->removeListener($eventName, [$subscriber, $params[0]]); } else { $this->removeListener($eventName, [$subscriber, $params]); } } }