Beispiel #1
0
 public function handle(Request $request)
 {
     $context = new RequestContext();
     $context->fromRequest($request);
     $matcher = new UrlMatcher($this->routes, $context);
     try {
         $parameters = $matcher->match($request->getPathInfo());
         $vm = $this->controller($parameters);
     } catch (ResourceNotFoundException $e) {
         $viewData = ['error' => 'NotFoundException', 'message' => 'You are accessing not existing page, please choose one of available feeds', 'available_feeds' => []];
         foreach ($this->routes as $route) {
             $viewData['available_feeds'][] = $route->getPattern();
         }
         $vm = new ViewModel($viewData, 404);
     }
     if (isset($parameters['_format'])) {
         switch ($parameters['_format']) {
             case 'xml':
                 $renderer = new Renderer\XML();
                 break;
             case 'json':
             default:
                 $renderer = new Renderer\JSON();
         }
     } else {
         $renderer = new Renderer\JSON();
     }
     $response = new Response();
     $response->setStatusCode($vm->getStatusCode());
     $renderer->render($response, $vm);
     $headers = [];
     foreach ($response->headers as $k => $v) {
         $headers[$k] = $v[0];
     }
     return $response;
 }