Ejemplo n.º 1
0
 /**
  * Handles query invocation
  * @return mixed
  */
 public function __invoke()
 {
     $result = call_user_func_array([$this, 'invoke'], func_get_args());
     $e = new observr\Event($this, ['result' => &$result]);
     if (!isset($this->stream)) {
         throw new xral\Exception('No resource specified');
     }
     if ($this->stream->isWrite()) {
         $this->attach(self::COMPLETE, function () use($result, $e) {
             if ($this->hasObservers(self::SAVE)) {
                 $this->setState(self::SAVE, new observr\Event($this, ['result' => $e['result']]));
                 $this->clearState(self::SAVE);
             }
         });
     }
     $this->setState(self::COMPLETE, $e);
     if (!$e->canceled) {
         $result = $e['result'];
     }
     if ($this->stream->isOpen()) {
         $this->stream->close();
     }
     return $result;
 }