Ver índice de contenidos del libro

18.1. Una visión general del funcionamiento de Symfony2

El código Symfony2 está formado por varias capas independientes, cada una de las cuales se basa en la anterior.

Truco La carga automática de clases no la gestiona el framework directamente, sino que se realiza mediante la clase UniversalClassLoader y el archivo src/autoload.php.

18.1.1. Componente HttpFoundation

En el nivel más profundo de Symfony2 se encuentra el componente HttpFoundation, que proporciona los principales objetos necesarios para trabajar con el estándar HTTP. Se trata de una abstracción orientada a objetos de algunas funciones y variables nativas de PHP:

  • La clase Request abstrae las principales variables globales de PHP, tales como $_GET, $_POST, $_COOKIE, $_FILES y $_SERVER.
  • La clase Response abstrae algunas funciones de PHP como header(), setcookie() y echo.
  • La clase Session y la interfaz SessionStorageInterface abstraen la gestión de sesiones y las funciones session_*().

18.1.2. Componente HttpKernel

Por encima de HttpFoundation está el componente HttpKernel, que se encarga de gestionar la parte dinámica de HTTP. Se trata de una capa muy fina por encima de las clases Request y Response para estandarizar la forma en la que se procesan las peticiones. También proporciona herramientas y extensiones que lo convierten en el punto de partida ideal para crear un framework sin demasiado trabajo.

También añade opcionalmente configurabilidad y extensibilidad, gracias al componente de inyección de dependencias y a un potente sistema de bundles (un concepto similar a los plugins de otras aplicaciones).

18.1.3. Bundle FrameworkBundle

El bundle FrameworkBundle une los principales componentes y librerías de Symfony2 para hacer un framework MVC ligero y rápido. Para reducir la curva de aprendizaje, el bundle sigue varias convenciones e incluye por defecto la configuración más común para las aplicaciones Symfony2.