Example #1
0
 /**
  * Retrieve listener for object
  * Creates listener if none exists
  * @param mixed $object
  * @param string|array|null $name
  * @return \observr\State\Listener\AggregateListener
  */
 public function listener($object, $name = null)
 {
     $uid = spl_object_hash($object);
     if (!isset($this->listeners[$uid])) {
         $this->listeners[$uid] = [];
     }
     if (is_null($name)) {
         return new AggregateListener($this->listeners[$uid]);
     }
     if (!is_array($name)) {
         $name = [$name];
     }
     $listeners = [];
     foreach ($name as $n) {
         list($unqualifiedName, $namespace) = StateObserver::parseName((string) $n);
         $qualifiedName = $unqualifiedName . '.' . $namespace;
         if (!isset($this->listeners[$uid][$unqualifiedName])) {
             $listener = new StreamListener($this->notifier, new StateObserver($object, $qualifiedName));
             $this->listeners[$uid][$unqualifiedName] = $listener;
         }
         $listeners[] = $this->listeners[$uid][$unqualifiedName];
     }
     return new AggregateListener($listeners);
 }
Example #2
0
 /**
  * Triggers individual observer callable
  * @param \observr\Event\EventInterface $event
  * @param \observr\State\callable $callable
  * @return type
  */
 protected function trigger(EventAwareInterface $event, callable $callable = null)
 {
     $this->increment++;
     return $this->parent->trigger($event, $callable);
 }