UrlRouter.php 1010 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <?php
  2. namespace KarmaFW\App\Middlewares;
  3. use \KarmaFW\App\Request;
  4. use \KarmaFW\App\Response;
  5. use \KarmaFW\App\ResponseError404;
  6. use \KarmaFW\App\ResponseRedirect;
  7. use \KarmaFW\App\ResponseFile;
  8. use \KarmaFW\Routing\Router;
  9. class UrlRouter
  10. {
  11. public function __invoke(Request $request, Response $response, callable $next)
  12. {
  13. // LOAD ROUTES
  14. if (is_file(APP_DIR . '/config/routes.php')) {
  15. require APP_DIR . '/config/routes.php';
  16. }
  17. try {
  18. $router = new Router;
  19. ob_start();
  20. $response = Router::routeRequest($request, $response);
  21. // en principe le contenu de la reponse est dans $response->content
  22. // mais si il y a eu des "echo", ils sont capturés par le ob_start puis insérés au début de $response->content
  23. $content = ob_get_contents();
  24. ob_end_clean();
  25. $response->prepend($content);
  26. $response = $next($request, $response);
  27. } catch (\Throwable $e) {
  28. echo "UrlRouter CATCHED EXCEPTION" . PHP_EOL; // TODO
  29. print_r($e);
  30. }
  31. return $response;
  32. }
  33. }