Rector con rector-laravel: aplicar el set de Laravel 11 al código
Hola, bienvenido. En esta lección vamos a poner al día el código que sigue funcionando con Laravel 11, pero que ya no se escribe así, con Rector y su extensión para Laravel, rector-laravel. Rector es una herramienta que reescribe código PHP aplicando reglas, y rector-laravel incluye esas reglas agrupadas por versión de Laravel: su set de Laravel 11, por ejemplo, convierte la propiedad $casts de los modelos en el método casts(), que es la forma de declarar los casts que estrena Laravel 11.
¿Qué hace Rector que no haga la guía oficial? La guía te dice qué ha cambiado, y Rector lo aplica: recorre todos los archivos, encuentra cada sitio con el patrón anterior y lo reescribe igual en todos. En este proyecto son 4 modelos, pero en uno grande pueden ser 200, y ahí se nota la diferencia entre hacerlo a mano y que lo haga Rector. Eso sí, que lo haga Rector no significa darlo por bueno sin mirarlo, así que vamos a ver lo que propone antes de aplicarlo.
Instalar Rector y rector-laravel
Rector y rector-laravel son herramientas de desarrollo, así que se instalan en require-dev. Vamos a instalarlos sin indicar versión, para que Composer elija la más nueva que encaje con el proyecto. Esta es la salida el 21 de octubre de 2026 (las versiones pueden cambiar cuando lo lances tú):
Composer ha instalado Rector 1.2 y rector-laravel 1.2, y no las versiones 2, que son las actuales. La primera línea explica una parte: la última versión de rector-laravel, la 2.7, exige PHP 8.3, y el contenedor tiene PHP 8.2. Pero la versión 2.5 todavía admite PHP 8.2 y tampoco la ha elegido. ¿Por qué? Porque todas las versiones 2 de rector-laravel necesitan Rector 2, y Rector 2 necesita PHPStan 2. Para saber quién fija PHPStan en el proyecto, vamos a utilizar composer why, que es lo contrario del why-not de la lección 3: en vez de qué impide instalar una versión, dice qué paquetes exigen uno que ya está instalado.
Es Larastan 2, el mismo que usamos para el análisis estático, y Larastan 3, que usa PHPStan 2, llega con la actualización a Laravel 12, como vimos en la lección 2. Así que Composer ha hecho lo correcto: la rama 1.2 de rector-laravel tiene el set de Laravel 11, que es el único que necesitamos ahora.
Fíjate también en la tercera línea: Composer solo actualiza los 2 paquetes nuevos y lo que ellos necesitan, sin tocar laravel/framework. Por eso el bloqueo por avisos de seguridad de la lección 5 no aparece, y los 4 avisos que cuenta al final son los de Laravel 11 que dejamos ignorados para el bloqueo en esa misma lección. Así queda composer.json, con las 2 restricciones que ha añadido Composer:
- 02El archivo rector.php
- 03Lo que propone Rector
- 04Aplicar los cambios
- 05Larastan no lee los casts del método casts()
- 06composer qa en verde y el commit