Skip to main content

Tabla de contenido


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 Controller index.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_ASSOC por defecto para arrays asociativos
  • ✅ utf8mb4 para 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ódulo wcag-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ódulo nielsen.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

  1. Siempre usar consultas preparadas para datos externos
  2. Validar entrada en controladores, revalidar en modelos si aplica
  3. No acceder a $_POST/$_GET directamente en vistas
  4. Usar mensajes flash para feedback al usuario
  5. Aplicar patrón PRG (Post/Redirect/Get)
  6. 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]
Last modified on June 3, 2026