Symfony - Arquitectura

Symfony es básicamente una colección de componentes y paquetes de alta calidad. Los componentes son una colección de clases que proporcionan una funcionalidad de núcleo único. Por ejemplo,Cache componentproporciona funcionalidad de caché, que se puede agregar a cualquier aplicación. Los componentes son bloques de construcción de una aplicación Symfony. Symfony tiene más de 30 componentes de alta calidad, que se utilizan en muchos marcos PHP como Laravel, Silex, etc.

Los paquetes son similares a los complementos, pero fáciles de crear y de usar. En realidad, una aplicación Symfony es en sí misma un paquete compuesto por otros paquetes. Un solo paquete puede usar cualquier número de componentes de Symfony y también componentes de terceros para proporcionar características como Webframework, acceso a bases de datos, etc. Symfony core web-framework es un paquete llamado FrameworkBundle y hay un paquete llamado FrameworkExtraBundle, que proporciona más sofisticación opciones para escribir una aplicación web.

La relación entre los componentes, los paquetes y la aplicación Symfony se especifica en el siguiente diagrama.

Marco web

Symfony está diseñado principalmente para escribir aplicaciones web de alta calidad con relativa facilidad. Proporciona varias opciones para escribir diferentes tipos de aplicaciones web, desde un sitio web simple hasta servicios web avanzados basados ​​en REST. Symfony proporciona un marco web como paquetes separados. Los paquetes comunes que se utilizan en el marco web Symfony son los siguientes:

  • FrameworkBundle
  • FrameworkExtraBundle
  • DoctrineBundle

El marco web Symfony se basa en la arquitectura Modelo-Vista-Controlador (MVC). Model representa la estructura de nuestras entidades comerciales. View muestra los modelos al usuario de la mejor manera posible según la situación. Controller maneja toda la solicitud del usuario, hace el trabajo real interactuando con el modelo y finalmente proporciona a la Vista los datos necesarios para mostrárselo al usuario.

El marco web Symfony proporciona todas las funciones de alto nivel necesarias para una aplicación de nivel empresarial. A continuación se muestra un flujo de trabajo simple de la aplicación web Symfony.

El flujo de trabajo consta de los siguientes pasos.

Step 1 - El usuario envía una solicitud a la aplicación a través del navegador, digamos http://www.symfonyexample.com/index.

Step 2 - El navegador enviará una solicitud al servidor web, digamos servidor web Apache.

Step 3 - El servidor web reenviará la solicitud al PHP subyacente, que a su vez la envía al marco web Symfony.

Step 4- HttpKernel es el componente central del framework web Symfony. HttpKernel resuelve el controlador de la solicitud dada utilizando el componente de enrutamiento y reenvía la solicitud al controlador de destino.

Step 5 - Toda la lógica empresarial tiene lugar en el controlador de destino.

Step 6 - El controlador interactuará con Model, que a su vez interactúa con Datasource a través de Doctrine ORM.

Step 7 - Una vez que el controlador completa el proceso, genera la respuesta por sí mismo oa través de View Engine, y la envía de vuelta al servidor web.

Step 8 - Finalmente, la respuesta será enviada al navegador solicitado por el servidor web.