- GitHub - rectorphp/rector: Instant Upgrades and Automated Refactoring of any PHP 5.3+ code
- Instant Upgrades and Automated Refactoring of any PHP 5.3+ code - rectorphp/rector
Texto traducido por IA.
Resumen de la publicación por la IA de durumis
- Presentamos cómo utilizar Rector, una herramienta para actualizar la versión de PHP, para migrar código PHP 5.3 a PHP 7.4.
- Después de instalar Composer, instalamos Rector en el proyecto y, mediante el archivo de configuración rector.php, especificamos el código objetivo de la actualización y la versión de PHP.
- Mediante la configuración y ejecución de las reglas de modificación, modificamos el código automáticamente y gestionamos los cambios con Git para realizar la actualización de forma segura.
Mientras revisaba un sitio web de GNU Board 5, un CMS PHP de Corea del Sur, encontré varias publicaciones que expresaban dificultades debido a la sintaxis y la versión obsoletas tras la actualización de la versión de PHP.
Así que, buscando una solución...
En Reddit, descubrí que una herramienta llamada Rector puede ayudar con la migración, así que les presento su uso.
Desde el lanzamiento de PHP 7.0 en 2015, han surgido varias herramientas de migración de PHP, como PHP CS Fixer y Rector, entre otras.
Rector parece ser más fácil de usar.
Rector (pronunciación: Rector) comprueba la sintaxis del código PHP de las versiones 5.3 a 8.2 y la corrige según la versión deseada.
Un inconveniente de Rector es que, al ser un analizador estático, no puede detectar errores en tiempo de ejecución.
Para utilizar Rector, es necesario tener instalado Composer, la herramienta de gestión de paquetes PHP.
1. Instale Composer.
2. Instale Rector en la carpeta del proyecto actual.
3. Cree el archivo de configuración rector.php.
Configuración de rector.php
Para facilitar la comprensión, estableceremos un escenario.
Supongamos que el código fuente es PHP 5.3 y que el objetivo de la actualización es PHP 7.4. Procederemos con esta configuración.
La versión de Rector es 1.0.3.
RectorConfig::config() configura la carpeta del código fuente y la versión de PHP.
La función withPhpSets configura las funciones PHP que se desean actualizar.
Si la versión de PHP en la que se ejecuta Rector es PHP 8.0,
se puede establecer la versión de PHP de esta manera: `phpversión: true`.
Sin embargo, si la versión de PHP en ejecución es PHP 7.4 o inferior
no se puede utilizar la sintaxis de parámetros con nombre en las funciones, por lo que debe establecerse `true` para la versión deseada.
Rector admite PHP 8.3, por lo que para especificar PHP 7.4, se debe hacer lo siguiente:
->withPaths([
__DIR__ , // Este es el directorio donde se encuentra rector.php.
])
Especifica las reglas y las carpetas que no se desean aplicar.
Las carpetas se especifican como '/nombre_de_la_carpeta/*'.
Los archivos se especifican como 'nombre_del_archivo'.
He añadido la regla "SensitiveConstantNameRector" porque
Rector no puede detectar la existencia de un índice indefinido en una matriz PHP y lo interpreta como una constante, lo que puede provocar cambios inesperados. Por lo tanto, lo agrego a las reglas de exclusión.
Estas reglas están relacionadas con el estilo de código, por lo que las excluyo.
Ejecución
Hay dos opciones.
Este comando solo imprime en la consola el código que necesita ser modificado.
Cuanto mayor sea la cantidad de código fuente, mayor será la cantidad de RAM necesaria, por lo que debe especificar la RAM a utilizar con la opción `--memory-limit=2G`.
Este comando modifica el código fuente directamente.
Dado que hay muchas opciones, es posible que se aplique alguna que no se desee, por lo que es necesario realizar una comprobación con Git.