bootstrap.php 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. require __DIR__ . '/vendor/autoload.php';
  3. /*
  4. * Solución temporal si el servidor HTTP
  5. * no soporta reescritura de rutas.
  6. */
  7. $_GET['_path_'] = ltrim($_SERVER['PATH_INFO'] ?? '', '/');
  8. /*
  9. * Establece todas las funciones de fecha de PHP a UTC.
  10. */
  11. date_default_timezone_set('UTC');
  12. /*
  13. * Carga variables de entorno desde el archivo .env
  14. */
  15. \App\Utils\Env::loadDotEnv();
  16. /*
  17. * Carga opciones de configuración de la aplicación.
  18. */
  19. foreach (\App\Utils\Config::getFromFilename('app') as $key => $value) {
  20. \App\Utils\Env::set('APP_' . strtoupper($key), $value);
  21. }
  22. /*
  23. * Carga opciones de configuración de la base de datos
  24. * para el ORM de la aplicación.
  25. */
  26. foreach (\App\Utils\Config::getFromFilename('database') as $database => $options) {
  27. foreach ($options as $option => $value) {
  28. \App\Utils\Env::put(strtoupper($database . '_' . $option), $value);
  29. }
  30. }
  31. /*
  32. * Configura e inicia una nueva sesión.
  33. */
  34. session_start(['save_path' => __DIR__ . '/writable/sessions']);
  35. /*
  36. * Crea una instancia de la aplicación.
  37. */
  38. $app = new \Riverside\Express\Application();
  39. /*
  40. * Configura la ruta de las vistas.
  41. */
  42. $app->set('views', __DIR__ . '/app/Views');
  43. /*
  44. * Establece parámetros personalizados
  45. * para utilizarlos en las rutas.
  46. */
  47. $app->param('uuid', '[a-f\d]{8}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{12}');
  48. $app->param('wildcard', '.*');
  49. /*
  50. * Carga los archivos de definición de rutas y middlewares.
  51. *
  52. * Se pasa la variable $app dentro de los archivos
  53. * para registrar rutas y middlewares.
  54. */
  55. require_once __DIR__ . '/routes/api.php';
  56. require_once __DIR__ . '/routes/web.php';
  57. /*
  58. * Ejecuta la aplicación.
  59. */
  60. $app->run();