En las estadísticas sobre los frameworks web más utilizados por los desarrolladores, Symfony framework siempre aparece entre las primeras posiciones.
De la traducción literal de Framework (marco de trabajo) podemos deducir su propósito. A continuación, vemos una definición más formal de framework:
"Una estructura conceptual y tecnológica de soporte definido, normalmente con artefactos o módulos concretos de software, que puede servir de base para la organización y desarrollo de software. Típicamente, puede incluir soporte de programas, bibliotecas, y un lenguaje interpretado, entre otras herramientas, para así ayudar a desarrollar y unir los diferentes componentes de un proyecto. "
En el artículo
CMS VS Framework se concreta el concepto de framework.
En la práctica, utilizaremos estas herramientas software para desarrollar aplicaciones web, incluidos servicios web, recursos web y API web. Los frameworks son, en resumen, bibliotecas que nos ayudan a desarrollar su aplicación de forma más rápida e inteligente.
Hay frameworks para trabajar en el lado del servidor (backend) o en el lado del cliente (frontend), o ambos. Symfony framework es un framework del lado del servidor.
Para saber más de sobre el desarrollo backend con Symfony puede consultar este
artículo.
Symfony es un framework que está construido mediante PHP y actualmente, a nivel tecnológico es de los más avanzados. Otros frameworks como Laravel están construidos utilizando Symfony framework. Gestores de contenido (CMS) como Drupal o Joomla utilizan componentes de Symfony.
Patrón de arquitectura Modelo Vista Controlador
MVC es la abreviatura de Modelo, Vista y Controlador. Es una forma muy popular de organizar el código. La gran idea detrás de MVC es que cada sección de su código tiene un propósito. Esos propósitos son diferentes. Una parte del código contiene los datos de la aplicación, parte del código hace que la aplicación tenga un buen aspecto y parte del código controla cómo funciona la aplicación.
Veamos las partes de MVC en detalle:
- Modelo: el código del modelo generalmente refleja cosas del mundo real. Este código puede contener datos en bruto, o definirá los componentes esenciales de su aplicación. Por ejemplo, si estuviera creando una aplicación de Tareas pendientes, el código del modelo definiría qué es una "tarea" y qué es una "lista".
- Vista: el código de vista se compone de todas las funciones que interactúan directamente con el usuario. Este es el código que hace que el aspecto de la aplicación sea bueno y además cómo el usuario la ve e interactúa con ella.
- Controlador: el código del controlador actúa como un enlace entre el modelo y la vista, recibiendo las entradas del usuario y decidiendo qué hacer con ellas. Es el cerebro de la aplicación y une el modelo y la vista.
Puede aprender más en el artículo MVC explicado.
Los desarrolladores crearán carpetas para cada parte de MVC. Proporcionando un punto de partida para traducir nuestras ideas en código. También facilita el retorno al código, ya que es sencillo identificar qué código hace qué. Además, el estándar de organización que promueve MVC facilita que otros desarrolladores entiendan nuestro código.
Estructura de carpetas de Symfony
Symfony es un completo framework diseñado para optimizar el desarrollo de las aplicaciones web basado en el patrón Modelo Vista Controlador. Esto quiere decir que para los desarrolladores, separa la lógica de negocio, la lógica de servidor y la capa de presentación.
Aunque Symfony framework utiliza el patrón de diseño Modelo Vista Controlador, tiene su propia forma de trabajo.
En línea con MVC, los archivos de la aplicación se distribuyen en carpetas según su función. La estructura que propone Symfony 4 es opcional, si no se requiere una carpeta (por ejemplo template) no es necesario crear al directorio.
También es posible cambiar estas carpetas, como puede ver en la página oficial.
Las carpetas más importantes de una aplicación realizada con Symfony framework, en su versión 4 son las siguientes:
- Tests: archivos de pruebas de la aplicación. Permite declarar un espacio de nombres de prueba específico para la carga automática.
- Templates: este directorio solamente se crea cuando se instala Twig (plantillas para php). Contiene las plantillas de nuestra aplicación.
- Config: contiene los archivos de configuración. Encontraremos un archivo por paquete y por entorno. También contiene un archivo para cada configuración de enrutamiento.
- Src: aquí se incluye la lógica de negocio. Dentro de este directorio se encuentran los controladores la aplicación.
- Var: incluye los archivos temporales, entre los que se encuentra la caché.
Desarrollar una aplicación con Symfony
Symfony framework aporta una serie de herramientas y clases ya programadas. Encaminadas a reducir el tiempo de desarrollo de una aplicación web.
Otra ventaja es que automatiza las tareas más comunes. Permitiendo al desarrollador dedicarse por completo a los aspectos específicos de cada aplicación. Por lo tanto reduce el tiempo de desarrollo de cualquier sitio web, que en definitiva es lo que se persigue en el campo del desarrollo de aplicaciones: Aumentar la productividad.
Symfony sigue la filosofía de "controladores sencillos y modelos pesados". Esto significa que los controladores deben contener solo una fina capa de "código pegamento" necesaria para coordinar las diferentes partes de la aplicación.
Los métodos incluidos dentro de un controlador solo deben llamar a otros servicios, desencadenar algunos eventos si es necesario y luego devolver una respuesta. Pero no deben contener ninguna lógica de negocio. Si este es el caso deberíamos llevar esta lógica a un servicio fuera del controlador.
Acoplar los controladores al framework nos permite aprovechar todas las características de Symfony framework, y así aumentar la productividad.
Las buenas prácticas de Symfony framework incluyen el uso de anotaciones para enrutamiento, almacenamiento en caché y seguridad. Eso simplifica la configuración. Toda la configuración está donde se necesita y solamente se usa un mismo formato.
Para ver mas detalles puede ver "Best Practices - Creating de Project".
En resumen, a día de hoy, Simfony framework es un proyecto PHP muy sólido y estable, con una gran comunidad, una buena solución para desarrollar aplicaciones.