El framework Symfony es conocido por ser muy flexible, ya que se utiliza en ámbitos tan diferentes como sitios web diminutos, aplicaciones empresariales que sirven miles de millones de peticiones e incluso como base de otros frameworks.

Desde que se publicó en julio de 2011, la comunidad Symfony ha recorrido un largo camino de aprendizaje, tanto en lo que se refiere a qué es capaz Symfony de hacer, como en cuál es la mejor manera de hacerlo.

Los diferentes recursos creados por la comunidad, desde artículos de blogs hasta presentaciones en conferencias, han originado una serie de recomendaciones y buenas prácticas oficiosas para desarrollar aplicaciones Symfony. Lamentablemente, muchas de estas recomendaciones son erróneas. De hecho, complican en exceso el desarrollo de aplicaciones y no siguen en absoluto la filosofía pragmática de los creadores de Symfony.

¿En qué consiste esta guía?

El objetivo de esta guía es solucionar el problema anterior estableciendo una serie de buenas prácticas oficiales para desarrollar aplicaciones con el framework Symfony2. Estas son las buenas prácticas que mejor encajan con la filosofía del framework según su principal responsable, Fabien Potencier.

Sabemos que es difícil deshacerse de los hábitos adquiridos durante años y por eso puede que alguna de estas buenas prácticas te choque o no estés de acuerdo con ella. En cualquier caso, creemos que si sigues estas buenas prácticas podrás desarrollar aplicaciones mucho más rápido, mucho más fácilmente y con la misma o más calidad de siempre. Además, esta lista de buenas prácticas se ampliará y actualizará de manera continua a partir de ahora.

En cualquier caso, ten en cuenta que esto son recomedaciones opcionales que tú y tu equipo podéis seguir o no al desarrollar aplicaciones Symfony. Si prefieres seguir utilizando tus propias metodologías y buenas prácticas, eres libre de hacerlo. Symfony es flexible y se adaptará a tu forma de trabajar. Eso nunca va a cambiar.

A quién se dirige este libro

Esta guía está pensada para cualquier programador Symfony, sin importar si es experto o principiante. No obstante, como esta guía no es un tutorial paso a paso, es necesario disponer de ciertos conocimientos básicos de Symfony para poder seguirla. Y si no sabes nada de Symfony, ¡bienvenido a la comunidad! y no olvides leer primero el tutorial Getting Started.

Además, hemos decidido que esta guía sea lo más corta posible, para que se a muy fácil leerla y consultarla las veces que necesites. Así que no vamos a repetir las explicaciones que puedes encontrar en la documentación de Symfony, como qué es la inyección de dependencias o cómo funcionan los controladores frontales. Nos centraremos exclusivamente en explicar cómo hacer lo que ya conoces.

La aplicación

Junto con esta guía encontrarás una aplicación de prueba desarrollada teniendo en cuenta todas estas recomendaciones. La aplicación es tan sencilla como un blog, ya que queremos que te fijes exclusivamente en lo que está relacionado con Symfony y te olvides de las particularidades de la propia aplicación.

Aunque la aplicación es sencilla no la vamos a desarrollar paso a paso en la guía. En su lugar, seleccionaremos algunos trozos de código a lo largo de los siguientes capítulos. En el último capítulo se explica cómo instalar la aplicación.

Tabla de Contenido
Capítulo 1. Las buenas prácticas del framework Symfony
1.1. ¿En qué consiste esta guía?
1.2. A quién se dirige este libro
1.3. La aplicación
Capítulo 2. Creando el proyecto
2.2. Creando la aplicación del blog
2.3. Estructurando la aplicación
2.4. Los bundles de la aplicación
2.5. Utilizando otra estructura de directorios
Capítulo 3. Configuración
3.1. Configuración relacionada con la infraestructura
3.2. Configuración relacionada con la aplicación
3.3. No utilices la configuración semántica
3.4. Define las opciones de configuración sensibles fuera de Symfony
Capítulo 4. Organizando la lógica de negocio
4.1. Almacenando clases fuera del bundle
4.2. Configurando los servicios
4.3. Utilizando una capa de persistencia
4.4. Estándares de código
Capítulo 5. Controladores
5.1. Configurando el enrutamiento
5.2. Configurando las plantillas
5.3. Cómo deberían ser los controladores Symfony
5.4. Utilizando los ParamConverter
5.5. Ejecutando código antes y después del controlador
Capítulo 6. Plantillas
6.1. Organizando las plantillas
6.2. Extensiones Twig
Capítulo 7. Formularios
7.1. Creando los formularios
7.2. Configurando los botones del formulario
7.3. Renderizando el formulario
7.4. Procesando el envío de formularios
Capítulo 8. Internacionalización
8.1. Formato de los archivos de traducción
8.2. Organizando los archivos de traducción
8.3. Definiendo claves para las traducciones
8.4. Ejemplo de archivo de traducción
Capítulo 9. Seguridad
9.2. Autorización
9.3. La anotación @Security
9.4. Comprobando los permisos sin @Security
9.5. Los Security Voters
9.6. Siguientes pasos
Capítulo 10. Assets web
10.1. Utilizando Assetic
10.2. Aplicaciones basadas en el frontend
Capítulo 11. Tests
11.1. Tests unitarios
11.2. Tests funcionales
11.3. Tests para el código JavaScript
Fuente: Fabien Potencier, Ryan Weaver, Javier Eguiluz