index.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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. // Normaliser l'URI : supprimer le slash final sauf pour la racine
  37. $uri = rtrim($uri, '/');
  38. if ($uri === '') {
  39. $uri = '/';
  40. }
  41. // Gestion du routing
  42. if (isset($routes[$uri])) {
  43. $route = $routes[$uri];
  44. if (is_callable($route)) {
  45. $route = $route();
  46. }
  47. if (is_array($route) && count($route) === 2) {
  48. [$controller, $method] = $route;
  49. $controller::$method();
  50. } else {
  51. // Page 404
  52. http_response_code(404);
  53. echo "Page non trouvée";
  54. }
  55. } else {
  56. // Routes simples non-statiques (paramètres)
  57. // Edition d'un projet : /projects/{id}/edit
  58. if (preg_match('#^/projects/(\d+)/edit$#', $uri, $m)) {
  59. require_once __DIR__ . '/../app/Controllers/HomeController.php';
  60. HomeController::editProject((int)$m[1]);
  61. return;
  62. }
  63. // Page non trouvée
  64. http_response_code(404);
  65. echo "Page non trouvée";
  66. }