mejoras-y-novedades-symfony-6

Mejoras y novedades en Symfony 6

Rate this post

El pasado 29 de noviembre se lanzaron a la vez la versión LTS de la rama 5.X, la cual nos trae una ventana de soporte que comprende los 3 años de bugs y security fixes. Al mismo tiempo, se lanzó también la nueva versión de la rama 6.X, la 6.1. Ambas versiones representan una gran cantidad de cambios, con muchas novedades interesantes que te vamos a contar más abajo.

Continúa leyendo y descubre cómo esta versión supone un gran avance y un gran cambio, sobre todo, para los desarrolladores, pues comprende una lista extensa de cambios de DX que nos van a facilitar enormemente el desarrollo, entre las cuales se encuentran: bash completion, preview de emails, rediseño de la vista de logs...

Además, viene de la mano de las últimas versiones de PHP, las cuales incluyen los type-hints, atributos, enums y pure intersection entre otros.

¡Te lo contamos todo aquí!

Type-hints

Symfony siempre se ha caracterizado por tener un gran soporte para nuevas versiones de PHP, y en este caso, han hecho un gran trabajo por lo que respecta a los type-hints de todos los componentes (puedes ver todos y cada uno de estos cambios agrupados en este PR).

Esto refuerza de manera muy positiva la estabilidad de la plataforma, evitando así el tipado débil, y permitiendo a los IDEs confiar en la sintaxis de lenguaje a través de un estándar. Pues ya no será necesario (salvo en casos excepcionales, como en el messenger) añadir los docblocks. Sin duda, esto es un paso más en la buena dirección, que está tomando el desarrollo de PHP en su conjunto.

Nested validation rules

Una de las ventajas que nos ha traído esta última versión de PHP(8) es el soporte nativo de anotaciones, tal y como lo poseen otros lenguajes como Java o Ruby.

Esto elimina prácticamente los docblocks en PHP y nos da una forma estándar de llevarlo a cabo. En su versión mas reciente, la 8.1, tenemos soporte nativo para anidar attributos (te recomendamos leer este artículo para más información sobre esta versión). Gracias a este cambio, se han integrado un nuevo conjunto de constraints (All, AtLeastOneOf, Sequentially, Collection) que nos permiten generar reglas de validación mucho más potentes sin tener que implementar una custom constraint. Con ellas, podremos indicar que las cumpla todas (All), al menos una (AtLeastOneOf) o que las compruebe de forma secuencial (Sequentially).

Enum Type

En lo que respecta a los formularios, contamos con un nuevo tipo, coincidiendo con la nueva versión de PHP 8.1, la cual incluye una nueva estructura de datos muy común en otros lenguajes, llamada enum. Con el EnumType, podemos crear nuestros enums y añadirlos al formulario, sin tener que mapearlos con un choice o similares como veníamos haciendo hasta ahora.

Bash completion

Sin lugar a dudas, esto es un cambio que no supone ninguna mejora de cara al cliente, pero que a los desarrolladores nos facilita enormemente la vida, prueba de ello son los votos que le ha dado la gente en github.

Ahora tenemos el autocompletado desde el terminal 🎉🎉; muy útil para no tener que escribir los nombres de comandos, o tener que recordar su sintaxis de forma precisa. Es cierto que podemos crear alias para esto, pero siempre es mejor que te lo autocomplete 🙂. De momento sólo funciona en bash, pero ya hay PRs para hacerlo funcionar en zsh y fish, entre otros. (Fuente del gif: https://github.com/symfony/symfony/pull/42251)

mejoras-symfony-6

Mejoras en el Profiler

Por lo que respecta al Profiler, tenemos muchas mejoras que suponen un avance en el DX, al igual que el cambio anterior. Por una parte, tenemos el preview de emails sin tener que instalar nada adicional; o, en el caso de que estés usando docker compose, sin tener que usar un contenedor con una imagen para capturar el correo como mailhog.

Esto supone una gran ventaja a la hora de hacer debug con los emails, en la misma petición que envía el email lo podemos estar viendo (email generado a través del componente notifier).

novedades-symfony-6

Por otra parte, tenemos el rediseño de la sección de logs. Ahora con un diseño mucho mas actual, y con funcionalidad para filtrar en función del canal o el nivel de error. Esto es muy útil ya que en el modo dev, se generan una gran cantidad de logs, que resulta difícil de encontrar exactamente lo que necesitas.

grandes-mejoras-symfony-6

En esta nueva versión, tenemos la posibilidad de desactivar el profiler para evitar la sobrecarga que genera al estar en modo dev. Esto puede ser muy útil para situaciones en las que estemos en un entorno de post deploy, con servidores que cuentan con pocos recursos por ejemplo, donde queremos estar en modo dev, pero no que el profiler añada esa sobrecarga.

Y por último, pero no por ello menos importante, han añadido un nuevo comando para listar las variables de entorno almacenadas en el .env y ver desde qué ficheros se están cargando.

grandes-novedades-symfony-6

Otras mejoras

  • Han añadido soporte para bootstrap5 y tailwind en la renderización de los formularios, que ya puedes usar incluyendo el tema de forma global en la configuración de twig o de forma local en el template.
  • Nuevas funciones en el componente String: trimPrefix y trimSuffix.
  • Más integraciones con el componente notifier.
  • Mejoras en la selección de idioma de forma automática a través del header «Accept-language«. Esto es una gran ventaja para delegar esta tarea al framework, en base a la petición que genera el navegador del usuario.
  • Rendimiento de los Voters mejorado a través de la caché haciendo override del método supportsType, de la clase Voter. En caso de que quieras hacerlo a través de la interfaz, deberás implementar el resto de métodos.
  • Nueva clase Path perteneciente al componente Filesystem, la cual puedes usar para normalizar el acceso a directorios y archivos, sin importar el sistema operativo desde el que se use.
  • Ya puedes añadir parámetros en el objeto Translatable.
  • Mensajes de ayuda en los forms traducibles.
  • Handlers del messenger configurables a través de atributos, sin tener que añadirlo a la configuración.
  • Consumo de mensajes del messenger en lote a través de la interfaz BatchHandlerInterface.
  • Permitir el reseteo de los servicios tras consumir un mensaje.

 

Esta nueva versión de Symfony nos trae una gran cantidad de novedades muy interesantes que junto con el rumbo que está tomando PHP sientan las bases de futuras mejoras ya sean por parte del framework o del lenguaje, la cual lo dotan de una gran versatilidad y estabilidad.

Te animamos a que veas por todas las novedades en de esta actualización en este enlace.

Comparte
¿Quieres más información?
Ponte en contacto con nosotros.
Picture of Jordi Mahiques
Jordi Mahiques
Backend developer - Departamento de desarrollo

One thought on “Mejoras y novedades en Symfony 6

Enviar Comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Suscríbete a nuestra newsletter
para estar al día en el mundo online
¿Tienes alguna incidencia?

Cuéntanos qué ocurre
y nos pondremos con ello lo antes posible.

    Este sitio está protegido por reCAPTCHA, y la Política de privacidad y Términos de servicio de Google.

    ¡Cuéntanos tus ideas!
    +34 96 653 19 14
    info@acceseo.com

      Este sitio está protegido por reCAPTCHA, y la Política de privacidad y Términos de servicio de Google.