/** * Creates event stream * @param string|array|\observr\State\Listener\ListenerInterface $listener * @throws \InvalidArgumentException */ function __construct($listener) { if (is_string($listener)) { $listener = Observer::listener($this, $listener); } if ($listener instanceof ListenerInterface && $listener instanceof NotifierAwareInterface) { $this->listener = $listener; } else { throw new \InvalidArgumentException(); } }
/** * Detach observer from subject * @param string $name * @param callable $observer */ public function detach(callable $observer = null) { Observer::listener($this, 'on')->unwatch('on', $observer); }
/** * Remove subject state container * @param mixed $name */ public function unsetState($name = null) { Observer::unsetState($this, $name); }
/** * Detach observer from subject * @param string $name */ public function detach($name) { Observer::listener($this, $name)->unwatch($name); }