Muy bien, vamos a meternos de lleno en la actualización a Symfony 7.4.
Abre tu archivo composer.json.
Observa que los paquetes Symfony utilizan el formato 7.3.*.
Esto es ligeramente diferente del resto de nuestros paquetes, que
suelen utilizar el formato de prefijo ^. Esto
hace que sea muy fácil encontrar y actualizar los paquetes symfony. Si
utilizas PhpStorm, ve a editar... buscar...
reemplazar.
Busca 7.3.* y
sustitúyelo por 7.4.*. Podemos
ver que tenemos 19 ocurrencias que reemplazar. Pulsa reemplazar todo...
y... ¡boom! Vamos
a hacer una doble comprobación para asegurarnos de que no se nos ha pasado ninguna. En require... sí,
parece que está bien.
Ahora en
require-dev... Sí,
ahí también tiene buena pinta. maker-bundle
tiene una estrategia de versionado diferente a la de los componentes principales y bundles de Symfony.
Por eso
tiene un aspecto diferente. Observa que bajo la
secciónextra, tenemos esta configuración symfony require . Esto le dice a Symfony
Flex qué versión de Symfony debe utilizar al instalar los componentes de Symfony. Algunos de nuestros
componentes Symfony necesarios requieren otros componentes Symfony como dependencias. Estas se llaman
dependencias transitivas (¡palabra elegante!), y pueden permitir
una amplia gama de versiones de Symfony. Como Symfony 6,
7 u 8. Esta configuración garantiza
que sólo se instalen las versiones 7.4. Así que cuando actualices
Symfony, es importante que también actualices esta configuración. ¡Genial! Ahora que
hemos actualizado nuestro composer.json, vamos a ejecutar la actualización de nuestro Composer: symfony composer update
Perfecto, ¡parece que ha funcionado!
Vayamos a nuestra aplicación y actualicemos. Sí, ahora
estamos en 7.4.8, la última versión de 7.4. De vuelta a nuestro
terminal, Ejecuta:: git status Nuestros archivos composer.json y composer.lock
están modificados, esto es lo esperado. Pero también
tenemos este nuevo config/reference.php. Ábrelo
en tu editor. Se trata de un
archivo autogenerado que Symfony crea al construir el contenedor. Symfony tiene ahora
un formato de configuración basado en arrays PHP, una alternativa a YAML. Este archivo se
genera para proporcionar un mejor autocompletado cuando se utiliza ese formato. YAML sigue siendo
el formato recomendado, y el que estamos utilizando en esta aplicación, por lo que este archivo
no es importante para nosotros en este momento. Si Symfony cambia
su recomendación en el futuro, ¡estaremos preparados! Consulta esta
entrada del blog para obtener más información al respecto.
Puedes añadir este archivo a tu .gitignore o confirmarlo. La mejor práctica
ahora mismo es confirmarlo, así que vamos a hacerlo. Ejecuta en tu terminal:
git add config/reference.php Después de ejecutar git status para confirmar que estamos
bien, podemos confirmar con: git commit -a -m "update composer" (Sí, realmente deberíamos
usar un mensaje de confirmación mejor aquí) ¡Veamos
si hay alguna actualización de recetas para la 7.4! Ejecuta: symfony composer
recipe:update Sólo dos, empieza por framework-bundle. Ejecuta git status
para ver los cambios. .env y config/services.yaml
han sido modificadas. Abre primero .env.
Se ha añadido una nueva variable de entorno
: APP_SHARE_DIR. Cuando se ejecuta Symfony
en una arquitectura multiservidor, este es un directorio que debe ser
compartido entre los servidores. Antes, tenías
que compartir todo el directorio de caché, lo que no es idea. Esta nueva configuración
te permite tener un control más preciso sobre lo que se
comparte entre servidores. Si te
interesa saber más sobre esto, consulta esta entrada del blog. Abre nuestro segundo
archivo modificado, config/services.yaml. Sólo se han modificado los comentarios
de la parte superior. Pero
proporciona una nueva función muy interesante ¿Ves esto de yaml-language-server
$schema? Esto configura un
esquema JSON para este archivo. Espera, ¿JSON?
Esto es YAML.
Como YAML es
compatible con JSON, podemos utilizar esquemas JSON para validar nuestros archivos YAML. Esto es genial,
pero lo mejor es que
nos proporciona autocompletado en nuestros IDEs si lo soportan. ¡ Y PhpStorm
lo soporta! Aquí tienes una entrada de blog
si quieres saber más sobre ello Ok, vamos a confirmar
estos cambios en nuestro terminal con: git commit -a
-m "update recipes" Ejecuta de nuevo el comando de actualización de la receta y actualiza el
paqueterouting. Ejecuta git status
para ver los cambios. config/routes.yaml: ábrelo.
En la parte superior
, se ha añadido una configuración de esquema YAML JSON. Abajo
, mira la nueva configuración simplificada. Con la configuración anterior
, sólo se cargaban los controladores en src/Controller. Con esta nueva configuración
, cualquier clase que contenga atributos #[Route] se cargará como controlador. Sigue siendo la
mejor práctica colocar todos tus controladores en src/Controller. Pero si
tienes una aplicación más compleja con varios dominios y sus propios controladores, éstos se cargarán
independientemente de dónde estén ubicados. Confirmemos estos
cambios con: git commit -a --amend ¡Perfecto! Entra en
nuestra aplicación y actualiza la página de inicio para asegurarte de que todo sigue funcionando correctamente. Bien, ¡la actualización a la 7.4
ha sido un éxito! A continuación, vamos
a actualizar Doctrine y explorar una interesante mejora de la última
versión del ORM. ¡Permanece atento!