Flujo de una request (Apache → routes.php → router → pages → templates)
Objetivo
Entender el recorrido completo de una petición HTTP para saber dónde depurar y dónde implementar cambios (rutas, auth, DB, UI).
1) Entrada: Apache + .htaccess
El proyecto usa front controller con rewrite: casi todas las URLs terminan ejecutando routes.php .
- Regla principal:
- .htaccess
Qué hace:
- Deja pasar archivos estáticos (png, css, js, etc.)
- Reescribe el resto hacia routes.php manteniendo querystring
2) Tabla de rutas: routes.php
routes.php carga el router y registra rutas tipo:
- get('/login', 'user/login.php')
- any('/clients', 'client/clients.php', ['validatePost'])
Referencia general:
- routes.php
Puntos importantes:
- Muchas rutas se habilitan según permisos con validatePermission(...) .
- Los paths reales se resuelven contra pages/ (lo hace el router).
3) Bootstrap: system/router.php
Este archivo es el núcleo del request. En cada llamada:
- Inicia sesión ( session_start )
- Carga Composer autoload (vendor)
- Carga .env (dotenv)
- Inicializa templates (League Plates)
- Crea conexión DB ( $GLOBALS['db'] )
- Define middleware helpers como validateLogin() y validatePost()
Referencia:
- router.php
4) Resolución de ruta: route() y any/get/post
Las funciones get/post/any llaman a route($route, $path_to_include, $validators) .
Lo clave:
- Convierte el path a pages/<archivo>.php
- Compara la URL solicitada con el patrón (incluye parámetros tipo $id )
- Si matchea:
- Ejecuta validators (ej. validatePost )
- Incluye el archivo final con include_once
Referencia (sección de matching e include):
- router.php
5) La “pantalla” final: archivo en pages/...
Ejemplo típico: pages/dashboard.php (la home).
Patrón común en páginas:
- Llaman validateLogin() si requieren sesión
- Instancian controllers para traer data
- Renderizan templates ( header , footer , etc.)
Ejemplo:
- dashboard.php
6) Render de UI: templates/...
La UI se renderiza con League\Plates\Engine creado en router:
- Inicialización:
- router.php
Luego las páginas llaman, por ejemplo:
- $GLOBALS['TEMPLATE']->render('header')
- $GLOBALS['TEMPLATE']->render('footer', ...)
Templates principales:
7) Dónde depurar según el síntoma
- 404 / rutas no responden : .htaccess y routes.php
- Redirecciones raras : APP_URL en .env + validateLogin()
- validateLogin
- Error DB : bloque de conexión en router
- DB init
- Pantalla carga pero data mal : controller correspondiente en controllers/
- UI rota : templates + assets en lib/