Programación Symfony2 / Componentes

Componentes

Los componentes de Symfony son una serie de librerías que conforman el framework y que pueden ser utilizadas de forma autónoma.

En una traducción libre de unas palabras de su creador, "Symfony2 es un conjunto de componentes escritos en php, que pueden ser utilizadas de forma individual y que resuelven tareas comunes en el desarrollo web".

Estas librerías o componentes autónomos son:

  • HttpFoundation: contiene las clases Request y Response y otras para el manejo de sesiones y carga de ficheros.
  • Routing: permite mapear peticiones a los métodos de controlador adecuados.
  • Form: creacion y envio de formularios.
  • Validator: sistema para la creación de reglas sobre la validación de datos.
  • ClassLoader: maneja la autocarga de librerías que permite la utilización de clases php sin tener que incluirlas en el codigo de forma manual (avoid require)
  • Templating: conjunto de herramientas para renderizar plantillas.
  • Security: permite manejar la seguridad de la aplicación.
  • Translation: herramienta para gestionar la traducción de cadenas estáticas en la aplicación.

Symfony estaría formado por todos estos componentes autónomos (Standalone Tools), junto con algunas librerías de terceros (como Swift Mailer) y una librería (Symfony bundle) que integraría todas estas piezas por separado para darle consistencia al conjunto de manera que puedan ser utilizadas como una única pieza.

De esta manera si vamos al código del framework veremos estas tres carpetas:

  • Components: componentes autónomos.
  • Bridges: es un conjunto de clases para un componente que extiende otra librería/componente. Se genera para que los componentes permanezcan tan desacoplados como sea posible. Por ejemplo si quieres utilizar el componente de formularios con otro ORM diferente a doctrine. (?).
  • Bundle: lo que hay aquí actúa como integrador entre componentes o librerías de terceros. El componente que integra la carpeta components y bridges es frameworkBundle y es el que forma lo que conocemos como el framework Symfony2.

Según las necesidades de nuestro proyecto podemos elegir utilizar todos estos componentes o bien un subconjunto de ellos. Cuando utilizamos todo el conjunto de componentes, se dice que estamos utilizando el framework al completo (full-stack framework).

Por último llamamos distribuciones Symfony2 a un conjunto determinado de Bundles, librerías de terceros y que serían especialmente convenientes para abordar determinado tipo de proyecto. Así por ejemplo podemos encontrar distribuciones orientadas a la creación de apis rest como la de [symfony rest](https://github.com/gimler/symfony-rest-edition) o preparadas para generar tu propio framework como [symfony cmf] (https://github.com/symfony-cmf/standard-edition).