Esempio n. 1
0
 /**
  * Listen and handle errors
  *
  * @param Eden\Registry\Index $request  The request object
  * @param Eden\Registry\Index $response The response object
  *
  * @return void|Eden\Server\Index
  */
 protected function handleErrors($request, $response)
 {
     $errorHandler = function () use($request, $response) {
         //there are alot of arguments
         $args = func_get_args();
         //remove the body
         $response->remove('body');
         //set the status
         $code = $response->get('code');
         if (!$code) {
             $response->set('code', 500);
         }
         array_unshift($args, $request, $response);
         //parse through middleware
         foreach ($this->errorMiddleware as $callback) {
             //bind callback
             $callback = $callback->bindTo($this, get_class($this));
             if (call_user_func_array($callback, $args) === false) {
                 break;
             }
         }
         //do we have a body ?
         if ((string) $response->get('body')) {
             $this->output($response);
             exit;
         }
         //there maybe another error/exception handler
         //let it be called since we could not do anything
     };
     $errorHandler = $errorHandler->bindTo($this, get_class($this));
     //global error/exception event
     $this->on('error', $errorHandler, true)->on('exception', $errorHandler, true);
     return $this;
 }