Análisis de Puntos Débiles y Plan de Mejora
Este documento resume el análisis técnico del estado actual de Alxarafe Microframework. Su objetivo es identificar barreras para la adopción y proponer una hoja de ruta para su modernización.
1. Puntos Débiles (Diagnosticados)
🔴 Rutas "Mágicas" y Opacas
- Problema: El framework utiliza escaneo recursivo de directorios (
glob()) para generar rutas basadas en la existencia de archivos. - Impacto:
- Rendimiento: El I/O de disco para escanear carpetas en cada petición es costoso.
- Rigidez: Las URLs están atadas a la estructura de archivos. No se pueden personalizar (ej.
/logindebe ser/Admin/Auth/login). - Depuración: Es difícil rastrear qué controlador atiende una URL específica.
🔴 Renderizado Implícito (Destructor)
- Problema:
ViewTraitutiliza el método mágico__destruct()para renderizar la vista al final de la ejecución del script. - Impacto:
- Flujo Impredecible: Si ocurre una excepción o se llama a
die(), la vista puede romperse o no renderizarse. - Testing: Es extremadamente difícil realizar pruebas unitarias de controladores que emiten salida (echo) al destruirse el objeto.
- Flujo Impredecible: Si ocurre una excepción o se llama a
🔴 Acoplamiento Fuerte y Falta de DI
- Problema: Uso extensivo de clases estáticas (
Config::getConfig(),Auth::user) y instanciación directa (new Class). - Impacto:
- Testabilidad: Impide el uso de Mocks/Stubs para testing.
- Extensibilidad: Dificulta reemplazar componentes core (ej. cambiar el sistema de Auth) sin reescribir el framework.
🔴 Módulo Admin Monolítico
- Problema: El módulo de administración (
src/Modules/Admin) está incluido en el paquete base. - Impacto:
- Bloat (Hinchazón): Proyectos que solo requieren una API o una web simple deben cargar con toda la lógica y vistas del panel de administración.
2. Propuesta de Modernización (Hoja de Ruta)
Fase 1: Modernización del Routing (Prioridad Alta)
Abandonar el escaneo de carpetas en favor de Atributos de PHP 8.
- Acción: Implementar un
Routerque lea atributos en los controladores. - Ejemplo:php
#[Route('/blog/post/{id}', method: 'GET')] public function show(int $id) { ... } - Beneficio: URLs limpias, explícitas y mejor rendimiento (se pueden cachear).
Fase 2: Ciclo de Vida Explícito (Request -> Response)
Cambiar el patrón de "Echo en Destructor" por un retorno de respuesta.
- Acción: Los controladores deben retornar un objeto
Response(oView). - Ejemplo:php
public function index() { return view('blog.index', ['data' => $data]); } - Beneficio: Control total sobre el flujo, facilidad para middlewares y testing.
Fase 3: Desacoplamiento Modular
Extraer el módulo de administración a un paquete separado.
- Acción: Mover
src/Modules/Admina un repositorio propio (alxarafe/admin-panel). - Beneficio: Alxarafe se convierte en un microframework puro, ligero y multipropósito.
Fase 4: Kernel de Aplicación (Arranque Unificado)
Unificar el punto de entrada.
- Acción: Crear una clase
AppoKernelque inicialice el framework, en lugar de depender de la configuración dispersa enindex.php. - Beneficio: Arranque estandarizado y facilidad de instalación.
3. Sugerencias de Mejora (Marzo 2026)
✅ Implementado: Atributo #[ExtraFieldsModel]
- Acción: Se ha creado una forma explícita de vincular modelos de extrafields a través del atributo
#[ExtraFieldsModel]. - Beneficio: Elimina la dependencia de nombres de clase rígidos y permite prefijos y etiquetas personalizados por modelo.
🚀 Futuras Mejoras Propuestas
1. Migración de Webpack a Vite
- Acción: Reemplazar el stack de construcción de assets (JS/SCSS) de Webpack por Vite.
- Beneficio: Unificación con el sistema de documentación (VitePress), tiempos de compilación casi instantáneos y mejor experiencia de desarrollo (HMR).
2. Modularización de ResourceTrait
- Acción: Dividir el trait monolítico
ResourceTrait.php(actualmente >1800 líneas) en componentes especializados (HasListLogic,HasEditLogic,HasMetadata). - Beneficio: Código más limpio, fácil de mantener y permite composición de controladores más flexible para el desarrollador.
3. Tipado Estricto y Propiedades Readonly (PHP 8.2+)
- Acción: Adoptar plenamente las características de PHP 8.2 en el Core, incluyendo propiedades
readonlypara configuraciones de arranque y tipos de retorno estrictos en todos los hooks de ciclo de vida. - Beneficio: Mayor robustez del código, detección temprana de errores y mejor soporte para IDEs.