コード例 #1
0
 /**
  * register all error handler (not found, not allowed, and generic error handler)
  */
 function registerErrorHandlers()
 {
     $this->container['notAllowedHandler'] = function ($c) {
         return function ($request, $response, $methods) use($c) {
             $view = new JsonRenderer();
             return $view->render($response, ['error_code' => 'not_allowed', 'error_message' => 'Method must be one of: ' . implode(', ', $methods), 405]);
         };
     };
     $this->container['notFoundHandler'] = function ($c) {
         return function ($request, $response) use($c) {
             $view = new JsonRenderer();
             return $view->render($response, ['error_code' => 'not_found', 'error_message' => 'Not Found'], 404);
         };
     };
     $this->container['errorHandler'] = function ($c) {
         return function ($request, $response, $exception) use($c) {
             $settings = $c->settings;
             $view = new JsonRenderer();
             $error_code = 500;
             if (is_numeric($exception->getCode()) && $exception->getCode() > 300 && $exception->getCode() < 600) {
                 $error_code = $exception->getCode();
             }
             if ($settings['displayErrorDetails'] == true) {
                 $data = ['error_code' => $error_code, 'error_message' => $exception->getMessage(), 'file' => $exception->getFile(), 'line' => $exception->getLine(), 'trace' => explode("\n", $exception->getTraceAsString())];
             } else {
                 $data = ['error_code' => $error_code, 'error_message' => $exception->getMessage()];
             }
             return $view->render($response, $data, $error_code);
         };
     };
 }
コード例 #2
0
 public function testValidResponse()
 {
     $jsonRenderer = new Renderer();
     $response = new Response();
     $response = $jsonRenderer->render($response, ['status' => 'ok'], 200);
     $this->assertTrue($response->getStatusCode() == 200);
     $this->assertTrue($response->getBody() == json_encode(['status' => 'ok']));
 }