bootstrap.php 1.8 KB

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