index.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. /**
  3. * Point d'entrée principal de l'application
  4. *
  5. * Ce fichier charge la configuration et affiche la page d'accueil.
  6. */
  7. // Chargement de la configuration
  8. $config = require_once __DIR__ . '/../config/config.php';
  9. // Chargement des routes
  10. $routes = require_once __DIR__ . '/../routes/web.php';
  11. // Récupération de l'URI demandée
  12. $rawUri = $_SERVER['REQUEST_URI'] ?? '/';
  13. $uri = parse_url($rawUri, PHP_URL_PATH);
  14. // Gestion des environnements avec un sous-dossier (comme MAMP)
  15. $basePath = '/map-generator';
  16. if (strpos($uri, $basePath) === 0) {
  17. $uri = substr($uri, strlen($basePath));
  18. }
  19. // En développement local (pas de basePath dans l'URI), utiliser les routes directement
  20. if (!isset($routes[$uri])) {
  21. // Essayer sans basePath
  22. $testUri = $uri;
  23. if (isset($routes[$testUri])) {
  24. $uri = $testUri;
  25. }
  26. }
  27. // Pour le développement local, si on n'a pas de basePath, on garde l'URI telle quelle
  28. if ($uri === '/projects' && !isset($routes[$uri])) {
  29. // Forcer la route projects pour le développement
  30. $uri = '/projects';
  31. }
  32. // Si l'URI est vide, on la définit sur /
  33. if (empty($uri)) {
  34. $uri = '/';
  35. }
  36. // Gestion du routing
  37. if (isset($routes[$uri])) {
  38. $route = $routes[$uri];
  39. if (is_callable($route)) {
  40. $route = $route();
  41. }
  42. if (is_array($route) && count($route) === 2) {
  43. [$controller, $method] = $route;
  44. $controller::$method();
  45. } else {
  46. // Page 404
  47. http_response_code(404);
  48. echo "Page non trouvée";
  49. }
  50. } else {
  51. // Routes simples non-statiques (paramètres)
  52. // Edition d'un projet : /projects/{id}/edit
  53. if (preg_match('#^/projects/(\d+)/edit$#', $uri, $m)) {
  54. require_once __DIR__ . '/../app/Controllers/HomeController.php';
  55. HomeController::editProject((int)$m[1]);
  56. return;
  57. }
  58. // Page non trouvée
  59. http_response_code(404);
  60. echo "Page non trouvée";
  61. }