Hprose\Service::defaultHandle PHP Метод

defaultHandle() публичный Метод

public defaultHandle ( $request, stdClas\stdClass $context )
$context stdClas\stdClass
    public function defaultHandle($request, stdClass $context)
    {
        $error = null;
        set_error_handler(function ($errno, $errstr, $errfile, $errline) use(&$error) {
            $error = new ErrorException($errstr, 0, $errno, $errfile, $errline);
        }, $this->errorTypes);
        ob_start();
        ob_implicit_flush(0);
        $context->clients = $this;
        $context->methods = $this->calls;
        $beforeFilterHandler = $this->beforeFilterHandler;
        $response = $beforeFilterHandler($request, $context);
        $self = $this;
        return $response->then(function ($result) use($self, &$error, $context) {
            @ob_end_clean();
            restore_error_handler();
            if ($error === null) {
                return $result;
            }
            return $self->endError($error, $context);
        });
    }

Usage Example

Пример #1
0
 public function defaultHandle($request, $context)
 {
     $self = $this;
     $error = null;
     set_error_handler(function ($errno, $errstr, $errfile, $errline) use(&$error, $self, $context) {
         if ($self->isDebugEnabled()) {
             $errstr .= " in {$errfile} on line {$errline}";
         }
         $err = $self->getErrorTypeString($errno) . ": " . $errstr;
         if ($errno == E_USER_ERROR || $errno == E_COMPILE_ERROR || $errno == E_CORE_ERROR || $errno == E_ERROR || $errno == E_PARSE) {
             $err .= ob_get_clean();
         }
         $error = $self->sendError($err, $context);
     }, $this->error_types);
     ob_start();
     ob_implicit_flush(0);
     $result = parent::defaultHandle($request, $context);
     ob_end_clean();
     restore_error_handler();
     return $error === null ? $result : $error;
 }