Actualizar Larastan 2 a Larastan 3 con PHPStan 2: por qué Rector 2 entra a la vez
Hola, bienvenido. En esta lección vamos a actualizar Larastan 2 a Larastan 3, que funciona sobre PHPStan 2, y Rector 1.2 a Rector 2, con el proyecto todavía en Laravel 11.
Aunque en la lección 2 ya vimos por qué Rector tiene que subir con Larastan, vamos a cambiar primero solo Larastan, para ver el error tal como aparece y aprender a leerlo. Y al final de la lección veremos qué señala Larastan 3 en el código, que es lo que resolveremos en la siguiente lección.
Larastan 3 exige PHP 8.2 y PHPStan 2, y su última versión admite Laravel desde la versión 11.44.2, así que nuestro Laravel 11.57 cumple. Larastan está en require-dev con ^2.9, y vamos a pasar esa restricción a ^3.0 en composer.json, sin cambiar nada más:
Y vamos a resolver las dependencias, igual que en la lección anterior. Esta es la salida el 21 de octubre de 2026 (la lista de versiones de Larastan y PHPStan será más larga cuando lo lances tú):
"You can only install one version of a package"
La última línea sugiere usar -W, pero ya lo estamos usando: Composer lo sugiere siempre que no encuentra una combinación de versiones posible. El resto se lee de arriba abajo.
La primera línea indica qué paquete lo bloquea: nuestro composer.json tiene rector-laravel en ^1.2. Las siguientes dicen que todas las versiones de Larastan 3, de la versión 3.0.0 a la 3.13.0, necesitan PHPStan 2. Y la conclusión dice que Composer tiene que instalar PHPStan 1.12.34, porque la rama 1.2 de rector-laravel exige Rector 1 y Rector 1 exige PHPStan 1, y que no puede tener a la vez una versión de PHPStan 1 y otra de PHPStan 2. Es el conflicto que ya anticipamos en la lección 2 con composer why phpstan/phpstan: PHPStan 1 lo fijaban Larastan 2 y Rector 1.2, y hemos movido solo uno de los 2.
La solución es actualizar Rector de la versión 1.2 a la 2, que usa PHPStan 2, y con él rector-laravel de la rama 1 a la 2, que es la que funciona con Rector 2. Son 2 líneas más de require-dev en composer.json, en el mismo cambio que Larastan:
Vamos a lanzar otra vez el mismo comando:
5 paquetes y ninguno más: Larastan 3.13, PHPStan 2.3, Rector 2.7, rector-laravel y iamcal/sql-parser, una dependencia de Larastan para leer los volcados SQL del esquema de la base de datos. Fíjate en rector-laravel: es la versión 2.5, la que ya anunciaba outdated en la lección 2, y tiene todo lo que necesitamos en este curso. Y laravel/framework sigue en la versión 11.57, otra vez gracias a las excepciones de los avisos de seguridad.
- 02rector.php sigue igual
- 03Lo que cambia en Larastan 3
- 04Lo que Larastan 3 señala en el proyecto
- 05Los tests, en verde