Skip to content

Diagnóstico y Plan de Adaptación a PHP 8.5.1 - Alxarafe ​

Este documento resume el estado actual del núcleo de Alxarafe y propone una hoja de ruta para aprovechar las capacidades de PHP 8.5.1.

1. Diagnóstico General de la Arquitectura ​

El núcleo del microframework presenta una base sólida pero con una deuda técnica acumulada en patrones que PHP 8.x permite modernizar.

Puntos Críticos Identificados ​

  • Dependencia de Estados Estáticos: El uso extensivo de métodos estáticos en Database, Trans, Debug y Routes dificulta la testabilidad y el desacoplamiento.
  • Abuso de stdClass: Las configuraciones y el manejo de datos dependen de objetos anónimos, perdiendo los beneficios del tipado fuerte de PHP.
  • Magia en DTOs: El DtoTrait utiliza métodos mágicos (__get, __set) que pueden ser sustituidos por características nativas más eficientes.
  • Manejo de Ciclo de Vida: El uso de die() y header() dentro de funciones de librería interrumpe el flujo controlado de la aplicación.

2. Recomendaciones de Mejora para PHP 8.5.1 ​

A. Implementación de Property Hooks (PHP 8.4+) ​

Sustituir la lógica de métodos mágicos en DtoTrait por hooks nativos. Esto permite validaciones y transformaciones de datos directamente en la definición de la propiedad, mejorando el rendimiento y la legibilidad.

B. Clases Readonly y DTOs Tipados ​

Migrar todas las estructuras de configuración (actualmente en Config.php) y objetos de datos a clases readonly.

  • Beneficio: Inmutabilidad garantizada y autocompletado total en el IDE sin depender de comentarios PHPDoc para stdClass.

C. Constructor Property Promotion ​

Simplificar los constructores de controladores y servicios eliminando la declaración repetitiva de propiedades.

D. Modernización del Sistema de Rutas y Dispatcher ​

  • Caché de Rutas: El sistema actual escanea directorios con glob en cada petición. Se recomienda implementar un generador de caché que produzca un mapa de rutas en un archivo PHP estático.
  • Middleware: Introducir una capa de middleware para manejar la autenticación y la inicialización, eliminando la lógica de redirección manual en los constructores de los controladores.

E. Tipado Estricto y Retornos ​

Asegurar que todos los archivos incluyan declare(strict_types=1); y que todos los métodos tengan tipos de retorno definidos, eliminando el uso de mixed donde sea posible.


3. Hoja de Ruta Sugerida ​

  1. Fase 1: Modernización de DTOs y Modelos
    • Refactorizar DtoTrait para usar Property Hooks.
    • Introducir clases de datos para las configuraciones.
  2. Fase 2: Limpieza de Dependencias
    • Actualizar componentes de Illuminate a la versión 11.
    • Evaluar la sustitución de jenssegers/blade por el motor nativo de Illuminate\View.
  3. Fase 3: Refactorización del Flujo de Ejecución
    • Migrar el Dispatcher a un modelo basado en eventos o middleware.
    • Eliminar llamadas a die() y centralizar la gestión de respuestas HTTP.

Documento generado por Junie (JetBrains AI) el 1 de febrero de 2026.