Ver índice de contenidos del libro

1.5. Symfony2: construye tu aplicación, no tus herramientas

Ahora sabemos que el objetivo de cualquier aplicación es interpretar cada petición entrante y crear una respuesta adecuada. Cuando una aplicación crece, es más difícil organizar tu código y que a la vez sea fácil de mantener. Además, siempre te vas a encontrar con las mismas tareas complejas: la persistencia de información a la base de datos, procesar y reutilizar plantillas, manejar los formularios, enviar mensajes de correo electrónico, validar los datos del usuario, administrar la seguridad del sitio web, etc.

La buena noticia es que todos los programadores web se encuentran con esos mismos problemas. Así que Symfony proporciona una plataforma completa, con herramientas que te permiten construir tu aplicación, no tus herramientas. Con Symfony2, nada se te impone: eres libre de usar la plataforma Symfony completa, o simplemente aquellas partes de Symfony que quieras.

1.5.1. Herramientas independientes: los componentes de Symfony2

Con todo lo anterior, ¿qué es exactamente Symfony2?. En primer lugar, Symfony2 es una colección de más de veinte librerías independientes que se pueden utilizar dentro de cualquier proyecto PHP. Estas librerías, llamadas componentes de Symfony2, son bastante útiles práticamente para cualquier aplicación, independientemente de cómo desarrolles tu proyecto. Las siguientes son algunas de las más destacadas:

  • HttpFoundation: contiene las clases Request y Response, así como otras clases para manejar sesiones y cargar archivos.
  • Routing: potente y rápido sistema de enrutado que te permite asignar una URI específica (por ejemplo /contacto) a cierta información acerca de cómo se debe manejar dicha petición (por ejemplo, ejecutar el método contactoAction()).
  • Form: una completa y flexible plataforma para crear formularios y procesar los datos presentados en ellos.
  • Validator: un sistema para crear reglas sobre datos y así comprobar si los datos que presenta el usuario son válidos o no siguiendo esas reglas.
  • ClassLoader: una librería para cargar automáticamente clases PHP sin necesidad de añadir instrucciones require a mano en los archivos que contienen esas clases.
  • Templating: juego de herramientas para utilizar plantillas, que soporta desde la herencia de plantillas (es decir, una plantilla está decorada con un diseño) y hasta otras tareas comunes de las plantillas.
  • Security: una poderosa librería para manejar todo tipo de seguridad dentro de una aplicación.
  • Translation: plataforma para traducir cadenas de texto en tu aplicación.

Todos y cada uno de estos componentes están desacoplados, lo que significa que puedes utilizarlos en cualquier proyecto PHP, independientemente de si utilizas la plataforma Symfony2.

Cada componente está diseñado para utilizarlo si es conveniente o para sustituirlo cuando sea necesario.

1.5.2. La solución completa: la plataforma Symfony2

¿Qué es la plataforma Symfony2? La plataforma Symfony2 es una librería PHP que realiza dos tareas diferentes:

  • Proporciona una selección de componentes Symfony2 y algunas librerías de terceros (por ejemplo, SwiftMailer para enviar mensajes de correo electrónico).
  • Define una configuración adecuada e incluye una capa que integra todas las diferentes partes (componentes, librerías, etc.)

El objetivo de la plataforma es integrar muchas herramientas independientes con el fin de proporcionar una experiencia coherente al desarrollador.

Symfony2 proporciona un potente conjunto de herramientas para desarrollar aplicaciones web rápidamente sin afectar excesivamente a tu forma de trabajar. Si estás comenzando con Symfony2, lo mejor es que utilices una distribución de Symfony2, que proporciona un esqueleto de un proyecto Symfony2 de prueba con varios parámetros ya preconfigurados. Si eres un usuario avanzado, puedes crearte tu propia distribución o incluso utilizar componentes individuales de Symfony2.