index.php 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. <?php
  2. use FrameworkX\App;
  3. use Middlewares\CorsMiddleware;
  4. use Routes\Dispatcher;
  5. require __DIR__ . '/../vendor/autoload.php';
  6. // Fallback para servir arquivos estáticos apenas no servidor embutido do PHP
  7. // (`php -S ... -t public`). Sob outros SAPIs (CLI / servidor do FrameworkX) não
  8. // existe REQUEST_URI, então só acessamos essa chave dentro do modo cli-server.
  9. if (php_sapi_name() === 'cli-server') {
  10. $path = parse_url($_SERVER['REQUEST_URI'] ?? '', PHP_URL_PATH);
  11. if ($path !== null && $path !== '' && is_file(__DIR__ . $path)) {
  12. return false;
  13. }
  14. }
  15. if (class_exists(Dotenv\Dotenv::class) && file_exists(__DIR__ . '/../.env')) {
  16. Dotenv\Dotenv::createImmutable(
  17. dirname(__DIR__),
  18. null,
  19. true
  20. )->safeLoad();
  21. }
  22. error_reporting(E_ALL);
  23. // CorsMiddleware é GLOBAL: roda antes do roteamento para também responder ao
  24. // preflight OPTIONS (que não possui rota e cairia em 404 sem este tratamento).
  25. $app = new App(new CorsMiddleware());
  26. // As rotas (com autenticação JWT e autorização por papel) ficam centralizadas
  27. // em routes/Dispatcher.php.
  28. Dispatcher::register($app);
  29. $app->run();