2 Controllers
2. Controladores (app/Controllers)
Este documento contiene un resumen técnico y detallado de los controladores principales del proyecto Frameworkito. Incluye propósito, estructura, funciones clave, recomendaciones y advertencias para cada uno.
1. BaseController.php
Propósito: Clase base para todos los controladores. Centraliza métodos y utilidades comunes como renderizado de vistas, manejo de errores, validación, respuestas JSON, manejo de inputs, redirecciones y logging.
Estructura y funciones clave:
view($view, $data = [], $layout = 'app'): Renderiza vistas con layouts, inyectando datos globales y del usuario autenticado si existe.redirect($url, $statusCode = 302),redirectWith($url, $message, $type = 'info'),back($fallback = '/'): Métodos para redirección estándar y con mensajes.validate($data, $rules, $messages = [], $fallback = '/'): Valida datos usando reglas y mensajes personalizados, integrando con el validador de la app.- Utilidades para manejo de request:
isAjax(),input($key = null, $default = null),has($key),all(),only($keys),except($keys),isMethod($method). user(),isAuthenticated(): Obtención y verificación de usuario autenticado (placeholders para integración con Auth).log($level, $message, $context = []),handleError($e, $fallbackMessage = 'Ha ocurrido un error'): Logging y manejo centralizado de errores, con soporte para logs en archivos y pantalla según entorno.getRequestInfo(): Obtiene información relevante de la request para debugging y profiling.
Advertencias y recomendaciones:
- Todos los controladores deben heredar de esta clase para mantener DRY y estandarizar respuestas.
- Aprovecha el manejo centralizado de errores y logs para facilitar el mantenimiento.
2. AuthController.php
Propósito: Controlador para toda la lógica de autenticación de usuarios, basado en Delight-im/Auth.
Estructura y funciones clave:
- Formularios y procesamiento de login, registro, logout.
- Recuperación y reseteo de contraseña (con tokens y validación).
- Verificación de email: incluye página de verificación, procesamiento, endpoint AJAX y reenvío de enlace.
- Integración con servicios de email para confirmaciones y recuperación.
- Logging de eventos de autenticación y redirecciones según resultados.
- Validación robusta de inputs y manejo de errores con mensajes amigables.
Advertencias y recomendaciones:
- Explica el flujo de autenticación, integración de formularios y rutas.
- Documenta cómo personalizar la lógica de login/registro y agregar nuevas validaciones o eventos.
- Usa logs para monitorear intentos de acceso y fallos de autenticación.
3. HomeController.php
Propósito: Controlador de páginas principales del sistema (inicio, info, testing, utilidades para desarrolladores).
Estructura y funciones clave:
index(): Página de inicio con bienvenida y estado del sistema (features, status, etc).info(): Página de información del sistema, rendimiento y configuración.test(),phpinfo(): Herramientas de testing y debug (solo en modo debug), útiles para desarrolladores.- Métodos privados para obtener estado del sistema, features, permisos de archivos, y pruebas automáticas de sesión, logging, validación y utilidades.
Advertencias y recomendaciones:
- Documenta las páginas de información y testing, su utilidad para desarrollo y diagnóstico.
- Asegúrate de deshabilitar funciones de testing en producción.
4. ProfileController.php
Propósito: Controlador para la gestión del perfil de usuario.
Estructura y funciones clave:
index(): Página principal de perfil con mensaje de bienvenida y logging de acceso.
Advertencias y recomendaciones:
- Explica cómo se puede extender este controlador para agregar edición de perfil, cambio de contraseña, avatar, etc.
- Usa el logging de accesos para monitorear actividad en perfiles.
5. PublicController.php
Propósito: Maneja las rutas públicas accesibles sin autenticación (landing, about, contacto, FAQ, privacidad, términos, status API, readme, verificación de DB, uptime).
Estructura y funciones clave:
landing(): Landing page pública, muestra features y estadísticas según tipo de app.about(),contact(),contactSubmit(),faq(),privacy(),terms(): Páginas informativas y formularios públicos para usuarios y visitantes.status(): Endpoint público para verificar el estado del sistema (API health check), útil para monitoreo externo.readme(): Página para mostrar el README/documentación de la app.- Métodos privados para verificación de conexión a base de datos y cálculo de uptime del sistema.
Advertencias y recomendaciones:
- Lista todas las rutas públicas y su propósito.
- Explica cómo agregar nuevas páginas públicas y cómo se integra la página de documentación.
- Usa el endpoint de status para monitoreo y alertas.
Todos los controladores deben heredar de BaseController para mantener consistencia, seguridad y aprovechar utilidades comunes.