Tabla de contenido
- Sprint-3 — Manual del Programador
- Tabla de contenido
- Arquitectura y tecnologías
- Estructura de carpetas
- Componentes del sistema
- Enrutamiento y flujo de ejecución
- Modelos y acceso a datos (PDO)
- Controladores y validación
- Vistas, CSS y JS
- Módulos JavaScript
- Autenticación, sesiones y roles
- API Endpoints (AJAX)
- Accesibilidad y usabilidad
- Estándares y buenas prácticas
- Cómo añadir nuevas funcionalidades
- Pruebas automatizadas
- Depuración y registro de errores
- Despliegue y configuración
- Documentación adicional
Arquitectura y tecnologías
Estructura de carpetas
Componentes del sistema
Modelos (8 clases)
Controladores (9 clases)
Enrutamiento y flujo de ejecución
El enrutamiento se gestiona mediante el Front Controllerindex.php:
Convenciones de enrutamiento
ruta: define el recurso principal (ej.partidos,usuarios)accion: especifica la operación CRUD (ej.crear,actualizar,eliminar)- Control de acceso por rol antes de ejecutar acciones sensibles
- Patrón PRG (Post/Redirect/Get) para evitar reenvíos de formularios
Tabla de rutas por rol
Modelos y acceso a datos (PDO)
ModeloBase - Conexión centralizada
Buenas prácticas aplicadas
- ✅ Consultas preparadas para evitar inyección SQL
- ✅
FETCH_ASSOCpor defecto para arrays asociativos - ✅
utf8mb4para compatibilidad con emojis y caracteres especiales - ✅ Transacciones en operaciones múltiples (licencias, liquidaciones)
- ✅ Eliminación lógica (
activo = 0) en lugar de física
Tablas de la base de datos
Controladores y validación
Ejemplo: ControladorPartido
Despacho de acciones con match
Vistas, CSS y JS
Estructura de vistas
- Las vistas residen en
src/www/vistas/ - Contienen solo lógica de presentación
- Reciben variables del controlador vía
extract($datos)
Archivos CSS principales
Convenciones
- ❌ No incluir estilos/scripts en línea
- ✅ Ubicar CSS en
src/www/css/ - ✅ Ubicar JS en
src/www/js/ - ✅ Usar variables CSS para colores y espaciados
- ✅ Diseño Mobile-First
Módulos JavaScript
Archivos JavaScript (11 módulos)
Ejemplo: Sistema de Modales
Autenticación, sesiones y roles
Inicio de sesión
Variables de sesión
Protección de rutas
API Endpoints (AJAX)
El sistema incluye endpoints JSON para operaciones AJAX:Endpoints disponibles
Accesibilidad y usabilidad
WCAG 2.1 Nivel AA/AAA
El módulowcag-aaa.js proporciona:
- Panel de configuración de accesibilidad
- Texto más grande
- Mayor espaciado de texto
- Reducción de animaciones
- Resaltado de enlaces
- Cursor grande
- Modo lectura fácil
- Navegación por teclado mejorada
- Anuncios para lectores de pantalla
Principios de Nielsen
El módulonielsen.js implementa:
- ToastManager: Notificaciones tipo toast
- LoadingManager: Indicadores de carga
- ConfirmManager: Diálogos de confirmación
Estándares y buenas prácticas
Nomenclatura
- Clases en
PascalCase:ModeloUsuario,ControladorPartido - Métodos en
camelCase:obtenerPorId(),listarTodos() - Variables en
camelCase:$usuarioId,$fechaInicio - Constantes en
SCREAMING_SNAKE_CASE:BD_HOST,APP_DEPURACION - Archivos en
snake_case:modelo_usuario.php,controlador_partido.php
Clean Code
- ✅ Funciones cortas con responsabilidad única
- ✅ Nombres descriptivos y autoexplicativos
- ✅ Comentarios PHPDoc/JSDoc en clases y métodos
- ✅ Manejo de errores centralizado
- ✅ Evitar duplicación de lógica
Reglas rápidas
- Siempre usar consultas preparadas para datos externos
- Validar entrada en controladores, revalidar en modelos si aplica
- No acceder a
$_POST/$_GETdirectamente en vistas - Usar mensajes flash para feedback al usuario
- Aplicar patrón PRG (Post/Redirect/Get)
- Documentar código con PHPDoc y JSDoc
Cómo añadir nuevas funcionalidades
1. Base de datos
2. Modelo
3. Controlador
4. Vista
5. Enrutamiento
Pruebas automatizadas
Estructura de pruebas
Ejecución
Depuración y registro de errores
Configuración
Registro de eventos
Despliegue y configuración
Desarrollo local (XAMPP)
Variables de configuración
Checklist de producción
-
APP_DEPURACION = false - Credenciales de BD seguras
- HTTPS habilitado
- Backups de BD configurados
- Logs de errores activos
- Permisos de archivos restringidos
Documentación adicional
Documentación técnica para desarrolladores del proyecto Sprint-3. // Antonio Gat Fernández | [email protected]