# Plan de Migración PHP 8 - Archivos y Cambios Específicos ## Requisitos Adicionales del Cliente ### Configuración Segura con .env - **Migrar toda configuración sensible a archivo .env** - **Eliminar credenciales de bases de datos del código** - **Usar empresaId del usuario para determinar conexión** ### Arquitectura Multi-Empresa - **Los usuarios tienen campo empresaId en su registro** - **La conexión a BD debe seleccionarse dinámicamente por empresaId** - **No debe existir información de bases de datos fuera del .env** ## Archivos Creados para la Migración ### 1. `/php8-migration/analisis-sistema.md` - Análisis general del sistema - Identificación de estructura y componentes - Evaluación de librerías utilizadas ### 2. `/php8-migration/reporte-problemas.md` - Reporte detallado de incompatibilidades - Priorización de problemas - Estimación de tiempos y riesgos ### 3. `/php8-migration/ejemplo-db-mysqli.php` - Ejemplo de migración de MySQL a MySQLi - Código compatible con PHP 8 ### 4. `/php8-migration/ejemplo-env-config.php` - Ejemplo de configuración con archivo .env - Gestión multi-empresa basada en usuario ## Cambios Críticos Requeridos ### Nivel URGENTE - Configuración y Base de Datos #### 1. Migrar a Configuración .env **Archivo:** `config.php` (eliminar completamente) - **Eliminar todas las credenciales del código** - **Crear archivo .env con variables seguras** - **Implementar clase Config para gestión centralizada** - **Impacto:** Seguridad y mantenibilidad #### 2. Implementar Conexión Multi-Empresa **Archivos:** `classes/db.class.php`, `classes/util.class.php` - **Reemplazar 13 funciones mysql_* por mysqli*** - **Implementar gestión de empresas basada en empresaId del usuario** - **Crear DatabaseManager para conexiones dinámicas** - **Impacto:** Sistema completo sin base de datos #### 3. Actualizar Lógica de Selección de BD **Archivos:** 100+ archivos con `$_SESSION['empresaId']` - **Reemplazar `SQL_DATABASE2.$empresaId` por conexión dinámica** - **Usar DatabaseManager para obtener conexión específica** - **Impacto:** Funcionalidad multi-empresa completa ### Nivel ALTO - Funciones Eliminadas 1. **`classes/util.class.php:575`** - `ereg_replace()` → `preg_replace()` 2. **`ajax/cuentas-pagar.php:18`** - `split()` → `explode()` 3. **`ajax/evaluar-pedidos.php:160,360`** - `split()` → `explode()` 4. **7 archivos con `each()`** - Reemplazar por `foreach` 5. **4 archivos con `create_function()`** - Reemplazar por funciones anónimas ### Nivel MEDIO - Sintaxis 1. **100+ ocurrencias de `$string{index}`** → `$string[index]` 2. **98+ ocurrencias de `list()` incorrecto** → sintaxis moderna 3. **Múltiples asignaciones por referencia** → revisión y limpieza ## Estructura de Archivos de Migración ``` php8-migration/ ├── analisis-sistema.md # Análisis general ├── reporte-problemas.md # Problemas identificados ├── ejemplo-db-mysqli.php # Ejemplo de migración DB ├── ejemplo-env-config.php # Ejemplo configuración .env ├── .env.example # Plantilla archivo .env ├── plan-ejecucion.md # Plan actualizado (este archivo) └── archivos-criticos.txt # Lista de archivos críticos ``` ## Recomendaciones de Seguridad ### Antes de Cualquier Cambio: 1. ✅ **Backup completo del sistema** 2. ✅ **Crear entorno de prueba aislado** 3. ✅ **Documentar versión actual funcional** 4. ✅ **Lista de todos los usuarios y procesos activos** ### Durante la Migración: 1. ✅ **Cambiar un módulo a la vez** 2. ✅ **Probar cada cambio inmediatamente** 3. ✅ **Mantener log detallado de modificaciones** 4. ✅ **No aplicar cambios a producción sin pruebas** ### Después de Cada Cambio: 1. ✅ **Ejecutar pruebas unitarias** 2. ✅ **Verificar funcionalidad completa** 3. ✅ **Comprobar rendimiento** 4. ✅ **Validar que no hay regresiones** ## Próximos Pasos Sugeridos 1. **Aprobación del plan:** Revisar y aprobar este análisis 2. **Preparación del entorno:** Configurar entorno de pruebas 3. **Backup completo:** Realizar backup integral del sistema 4. **Migración fase 1:** Actualizar capa de base de datos (MySQL → MySQLi) 5. **Migración fase 2:** Reemplazar funciones eliminadas 6. **Migración fase 3:** Actualizar sintaxis 7. **Pruebas finales:** Validación completa del sistema ## Estado Actual - ❌ **NO COMPATIBLE** con PHP 8 - ⚠️ **Requiere migración completa** antes de actualizar PHP - 🔴 **Alto riesgo** de pérdida total de funcionalidad - 📋 **Plan detallado** disponible para ejecución **ADVERTENCIA:** No actualizar la versión de PHP sin completar todos los cambios de migración.