Rector: actualización de la aplicación PHP
28 de marzo de 2025En el dinámico mundo del desarrollo PHP, a menudo nos encontramos con la necesidad de refactorizar código, actualizarlo a nuevas versiones de PHP o adaptarlo a cambios en las librerías y frameworks utilizados. Las modificaciones manuales pueden llevar mucho tiempo y ser propensas a errores, que es donde entra Rector. Esta herramienta permite la transformación automatizada del código mediante reglas fácilmente configurables y extensibles. En este artículo, veremos cómo instalar Rector y cómo utilizarlo eficazmente para modernizar aplicaciones PHP.
La herramienta PHP Rector es una potente herramienta de refactorización automatizada que ayuda a migrar código entre versiones de PHP, actualizando frameworks y mejorando la calidad del código. Con reglas predefinidas y la capacidad de crear transformaciones personalizadas, permite a los desarrolladores actualizar eficientemente código sin tener que editar manualmente cada archivo. Y por eso ahorra tiempo y, por tanto, dinero.
Ejemplos básicos típicos de lo que Rector hace por mí
Ejemplos de lo que Rector puede convertir automáticamente una nueva versión, lo que ahorra mucho trabajo manual!
1. Convertir la notación antigua de array a notación moderna (array()
→ []
)
Si estás usando PHP 5.4 o posterior, Rector puede convertir tu antigua notación de arrays a la nueva:
Código original:
$array = array(1, 2, 3);
Después de la refactorización:
$array = [1, 2, 3];
2. Convertir métodos constructores antiguos (__construct
en lugar del nombre de la clase)
En PHP 4, los constructores solían tener el mismo nombre que la clase, lo cual está obsoleto en las versiones modernas de PHP. Rector es puede anular.
Código original:
clase MiClase {
function MiClase() {
echo "Hola";
}
}
Después de la refactorización:
class MiClase {
function __construct() {
echo "Hola";
}
}
3. Sustitución de funciones obsoletas
Por ejemplo, each()
fue eliminada en PHP 8.0, por lo que Rector puede sustituirla por la moderna foreach
.
Código original:
while (list($clave, $valor) = each($matriz)) {
echo "$clave => $valor";
}
Después de la refactorización:
foreach ($array as $key => $value) {
echo "$clave => $valor";
}
4. Adición de tipos más estrictos (PHP 7.4+)
Rector puede añadir declaraciones de tipos para argumentos y valores de retorno de métodos.
Código original:
función add($a, $b) {
return $a + $b;
}
Después de la refactorización:
función add(int $a, int $b): int {
return $a + $b;
}
5. Convertir a ::class
en lugar de nombres de clase de cadena
El PHP moderno permite usar ::class
en lugar de nombres de clase como cadenas.
El PHP moderno permite usar ::class
en lugar de nombres de clase como cadenas.
Código original:
$nombreclase = "MiClase";
$obj = new $nombreclase();
Después de la refactorización:
$className = MyClass::class;
$obj = new $nombreclase();
Estos son sólo ejemplos básicos - Rector puede hacer muchas más modificaciones, como automatizar el código para las nuevas versiones de PHP, la eliminación de funciones obsoletas, y reescribir el código Symfony / Laravel a estándares recomendados.
6. Conversión de anotaciones a atributos (Doctrine, Symfony, PHP 8+)
PHP 8 introdujo atributos nativos para reemplazar las anotaciones PHPDoc tradicionales. Rector ti ayuda a reescribir automáticamente las anotaciones antiguas en atributos modernos.
Código original (con anotaciones):
Usar Doctrine como ORM;
/**
* @ORM\Entity
* @ORM\Table(name="users")
*/
class Usuario {
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private int $id;
/**
* @ORM\Column(type="string", length=255)
*/
private string $nombre;
}
Después de refactorizar a atributos:
utilizar Doctrine\ORM\Mapping como ORM;
#[ORM\Entity].
#[ORM\Table(name: "users")]
class Usuario {
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column(type: "integer")]
private int $id;
#[ORM\Column(tipo: "cadena", longitud: 255)] private string $nombre; [ORM\Column(tipo: "cadena", longitud: 255)
private string $nombre;
}
Después de esto, todavía tienes que modificar la configuración de Doctrine para utilizar atributos en lugar de anotaciones y puedes probar la aplicación para ver cómo funciona después de cambiar de anotaciones a atributos.
La conversión con anotaciones a atributos es la tarea más común para la que uso Rector. Puedes tratar tanto la conversión de entidades Doctrine como la anotación de controladores en Symfony Framework. Además, si necesitas ayuda con esto no dudes en contactarme.
Para más detalles sobre este tema, consulte Cómo convertir Anotaciones a Atributos
✅ Otras ventajas de convertir anotaciones en atributos:
- Escritura más corta y clara .
- No es necesario depender del analizador PHPDoc .
- Los atributos forman parte del lenguaje, lo que mejora la estabilidad y el rendimiento
Instalación de Rector
Rector es opensource y se distribuye bajo la licencia libre MIT
Podemos instalar Rector dentro del proyecto, pero se puede instalar en cualquier otro sitio - sólo se necesita una versión suficientemente reciente de PHP. Así que si tienes un proyecto con una versión antigua de PHP, no puedes instalar y ejecutar Rector dentro del proyecto, sino que tienes que instalarlo aparte y ejecutarlo con otra versión más reciente de PHP.
Rector se puede instalar dentro de un proyecto usando Composer. Se recomienda instalarlo como dev dependencia ya que normalmente sólo se utilizará durante el desarrollo y la refactorización.
composer require rector/rector --dev
Después de la instalación, puedes crear un archivo de configuración, por ejemplo:
vendor/bin/rector init
Este comando generará un archivo básico rector.php
en el que podrás definir reglas de refactorización.
Este comando generará un archivo básico rector.php
en el que podrás definir reglas de refactorización.
Iniciando Rector
vendor/bin/rector process src
Este comando refactorizará todos los archivos PHP de la carpeta src
según las reglas establecidas en rector.php
.
Ejecutar sin aplicar modificaciones al código fuente
vendor/bin/rector process src --dry-run
Vídeo
Un vídeo con una descripción de Rector y una demostración práctica de cómo utilizar Rector para refactorizar una aplicación.
Artículos sobre un tema similar
Lenguaje de programación Go
Análisis de la asignación y fijación de precios del desarrollo de proyectos de software
Programa Python para controlar Docker mediante la API
Cómo utilizar MailCatcher para probar correos electrónicos
API OpenAI de Python
Creación de una aplicación web WebSocket y configuración de un proxy
Gestión de proyectos: desarrollo ágil de software
Cómo ejecutar aplicaciones PHP antiguas
Lo que debe saber un buen programador
Lenguaje de programación Rust
NodeJS: desarrollo, configuración del servidor
Fallo de seguridad de Nette CVE-2020-15227
API REST: API de plataforma
Alojamiento web y de correo personalizado con el software ISP Config
Programación en SQL: PostgreSQL, MySQL/MariaDB
HTTPS: web segura
Base de datos NoSQL Mongo DB
Connecting to Microsoft SQL Server from Linux
¿Cuál es la descripción del trabajo de un programador?
Localización de aplicaciones Python
Qué correo y alojamiento web elegir
Digispark - Programar microcontrolador Atmel ATtiny con Arduino IDE
Desarrollo para procesadores ARM con Arduino IDE
Cómo programar el procesador WiFi ESP8266
Smartphone abierto con Linux - Openmoko Neo FreeRunner
Boletin informativo
Si está interesado en recibir noticias puntuales por correo electrónico.
Puedes registrarte rellenando tu email
suscripción de noticias.
+