Descubre las novedades que traerá Symfony 4

Blog Single

Se ha anunciado que Symfony 4 saldrá este mes de Noviembre y todos los desarrolladores que trabajamos con este maravilloso framework deberíamos conocer las novedades que trae esta nueva versión. Fabien Potencier ha dado un golpe en la mesa y su equipo ha decidido que esta versión tenga grandes cambios. Hay que adaptarse a las necesidades y a las dirección que está tomando el desarrollo de software por lo que es momento de dejar atrás errores del pasado y empezar a trabajar con nuevas buenas prácticas.

En este sentido encontramos el actual debate de “Monolito VS Microservicios”, pero Symfony 4 quiere ser un todoterreno y soportar la posibilidad de desarrollar una gran aplicación como una plataforma de pequeños microservicios. Para ello ya tienen planteado un timing con las próximas versiones a lanzar y la “deprecación” de las versiones pasadas:

road map

Vamos hacer un recorrido por las novedades principales que conocemos hasta ahora a través de los artículos que ha publicado Fabien Potencier en su blog.

Symfony Flex

Symfony Flex es la gran novedad en la nueva versión del framework. Esta herramienta permitirá instalar y desinstalar dependencias automáticamente a través de un sistema de recetas controlado por el equipo de Symfony.

Esto romperá con la típica instalación que requiere dar de alta el bundle en nuestro AppKernel y meter la configuración pertinente con el fichero config.yml. Cuando se instale un Bundle, Symfony 4 lo configurará automáticamente y se adaptará a las posibles dependencias que ya tengas instaladas.

De esta manera Symfony Flex propone de trabajar de una manera muy diferente en el que cada componente se carga explicitamente además de incluir un repositorio oficial que te permite descubrir los mejores bundles y otro repositorio apoyado por la comunidad.

La filosofía que quiere transmitir con este cambio es que las dependencias de tu aplicación deberían COMPONER Y NO HEREDAR.

Desaparecen los Bundles

Ya existía un debate a la hora de organizar una aplicación Symfony, si en distintos bundles por módulos o crear un solo bundle llamado AppBundle. Sin embargo en esta nueva versión  se acabó el debate y se permitirá generar aplicaciones sin bundles, es más será una buena práctica y es el objetivo para la siguiente mayor versión.

El código de la aplicación ya no colgará sobre un bundle, si no que el código fuente colgará directamente del directorio src/ con el namespace App. Este cambio permite que el código esté desacoplado del framework. Este es uno de los conceptos que se está haciendo hincapié hoy en día a la hora de desarrollar software intentando mantener independiente la lógica del negocio y la tecnología usada.

Variables de entorno

En esta versión desaparece el fichero parameters.yml y en su lugar se emplearán variables de entorno. Se trata de una tendencia que están tomando la mayoría de frameworks y se recomienda como buena práctica en las mayoría de plataformas de despliegue en la nube.

El uso de variables de entorno además de ser un estándar permite la configuración del entorno de ejecución de una manera más cómoda. Éstas se pueden leer desde calquier software, además de ser independiente del código fuente, framework y lenguaje. Para el desarrollo en Symfony proponen utilizar el componente DotEnv que vendrá nativo en Symfony 4. El cambio entre un archivo .env y las variables de entorno “de verdad” será automático y transparente.

Sustituir composer tasks por Makefile

Para autodesplegar en ciertos proveedores es habitual tener scripts propios de tareas como ejecutar test suites, borrar caché, arrancar un servidor web. Por ello se ha decidido centralizar los scripts haciendo uso de un archivo MakeFile

La herramienta make es bastante conocida y un “estándar” en algunos ámbito de la programación. La ventaja es que es totalmente agnóstico al lenguaje y no es necesario que los ejecute composer.

Cambio en la estructura de directorios

El objetivo en Symfony 3 era hacer que la estructura de directorios se pareciera a la de UNIX, un cambio que se implantó es incluir el directorio /var. En esta nueva versión se sigue en esta misma dirección  por lo que se harán cambios como:

  • Renombrar el directorio app/ por /etc (directorio de unix donde se almacenan los ficheros de configuración).
  • Los tests irán sobre el directorio tests/
  • Las plantillas se almacenarán en templates/ de tal manera que src/ está reservado exclusivamente a clases PHP.

#Bonus: Demo de Symfony Flex

Como bonus de este articulo, traigo el siguiente vídeo colgado por SensioLabs en el que se ve una demo de uso de Symfony Flex. Parece que esta es la apuesta fuerte del framework e iremos descubriendo todo su potencial y la novedades que vayan publicando antes de que podamos tocar Symfony 4 por primera vez.

Comparte el artículo si te ha resultado interesante: