# Symfony

Symfony es un framework diseñado para desarrollar aplicaciones web basado en el patrón Modelo Vista Controlador. Para empezar, separa la lógica de negocio, la lógica de servidor y la presentación de la aplicación web. Proporciona varias herramientas y clases encaminadas a reducir el tiempo de desarrollo de una aplicación web compleja. Además, automatiza las tareas más comunes, permitiendo al desarrollador dedicarse por completo a los aspectos específicos de cada aplicación.
Symfony está desarrollado completamente en PHP. Es compatible con la mayoría de gestores de bases de datos, como MySQL, PostgreSQL, Oracle y Microsoft SQL Server. Se puede ejecutar tanto en plataformas *nix (Unix, Linux, etc.) como en plataformas Windows.

## Historia

En el año 2003, Fabien Potencier, creador de Symfony y actual CEO de Sensio Labs, investigó acerca de las herramientas open source existentes para el desarrollo de aplicaciones web en PHP, pero ninguna de las existentes cumplió con sus expectativas. Cuando PHP 5 fue liberado, consideró que las herramientas que existían en ese momento habían madurado lo suficiente para ser integradas en un solo framework. Le llevó un año desarrollar el núcleo de Symfony. Basó su trabajo en el Modelo Vista Controlador, el ORM de Propel y el ayudante para realizar plantillas de Ruby on Rails.
La primera versión de Symfony fue lanzada en octubre de 2005, por Fabien Potencier. Originalmente fue creado para el desarrollo de las aplicaciones de Sensio. Luego, tras el éxito que tuvo en el desarrollo de una página web para comercio electrónico y algunos otros proyectos, decidió liberarlo bajo una licencia open source.
En 2012 el CMS Drupal decidió empezar a usar algunos componentes de Symfony en la versión Drupal 8

## Patrocinio

Symfony es patrocinado por Sensio Labs, una compañía francesa que provee consultoría, servicios, formación sobre tecnologías open source. Inicialmente fue nombrado Sensio Framework, y a todas sus clases se les aplicó el prefijo sf. Tiempo después, cuando se decidió lanzarlo como un framework open source, se acordó llamarle Symfony.

## Características

Symfony fue diseñado para ajustarse a los siguientes requisitos:
* Fácil de instalar y configurar en la mayoría de plataformas (y con la garantía de que funciona correctamente en los sistemas Windows y Unix-like estándares).
* Independiente del sistema gestor de bases de datos. Su capa de abstracción y el uso de ORM (Doctrine 2, Propel), permiten cambiar con facilidad de SGBD en cualquier fase del proyecto.
* Utiliza programación orientada a objetos y características como los espacios de nombres, de ahí que sea imprescindible PHP 5.3.
* Sencillo de usar en la mayoría de casos, aunque es preferible para el desarrollo de grandes aplicaciones web que para pequeños proyectos.
* Aunque utiliza Modelo Vista Controlador (MVC), tiene su propia forma de trabajo en este punto, con variantes del MVC clásico como la capa de abstracción de base de datos, el controlador frontal y las acciones.
* Basado en la premisa de “convenir en vez de configurar”, en la que el desarrollador solo debe configurar aquello que no es convencional.
* Sigue la mayoría de mejores prácticas y patrones de diseño para la web.
* Preparado para aplicaciones empresariales y adaptable a las políticas y arquitecturas propias de cada empresa, además de ser lo suficientemente estable como para desarrollar aplicaciones a largo plazo.
* Código fácil de leer que incluye comentarios de phpDocumentor y que permite un mantenimiento muy sencillo.
* Fácil de extender, lo que permite su integración con las bibliotecas de otros fabricantes.
* Una línea de comandos que facilita la generación de código.

## Características para el desarrollo automatizado de proyectos web

Las características más comunes para el desarrollo de proyectos web están automatizadas en symfony, tales como:
* Permite la internacionalización para la traducción del texto de la interfaz, los datos y el contenido de localización.
* La presentación usa templates y layouts que pueden ser construidos por diseñadores de HTML que no posean conocimientos del framework.
* Los formularios soportan la validación automática, lo cual asegura mejor calidad de los datos en las base de datos.
* El manejo de caché reduce el uso de banda ancha y la carga del servidor.
* El soporte de autenticación y credenciales facilita la creación de áreas restringidas y manejo de seguridad de los usuarios.
* El enrutamiento y las URLs inteligentes hacen amigable las direcciones de las páginas de la aplicación.
* Permite la paginación, clasificación y filtraje automáticos.
* Los plugins proveen un alto nivel de extensibilidad.
* Dispone de interacción con AJAX.

## Versiones

| Color | Meaning |
| Rojo | Versión sin soporte |
| Naranja | Versión solo con Actualizaciones de Seguridad |
| Verde | Versión soportada |
| Azul | Versión futura |
| Versión | Fecha lanzamiento | Soporte | Versión de PHP | Fin de Soporte |
| 1.0 | Enero de 2007 | 3 años | >= 5.0 | Enero de 2010 |
| 1.1 | Junio de 2008 | 1 año | >= 5.1 | Junio de 2009 |
| 1.2 | Diciembre de 2008 | 1 año | >= 5.2 | Noviembre de 2009 |
| 1.3 | Noviembre de 2009 | 1 año | >= 5.2.4 | Noviembre de 2010 |
| 1.4 | Noviembre de 2009 | 3 años | >= 5.2.4 | Noviembre de 2012 |
| 2.0 | Julio 2011 | 8 meses | >= 5.3.2 | Marzo de 2013 |
| 2.1 | Septiembre de 2012 | 8 meses | >= 5.3.3 | Abril de 2013 |
| 2.2 | Marzo de 2013 | 8 meses | >= 5.3.3 | Noviembre de 2013 |
| 2.3 | Mayo de 2013 | 3 años | >= 5.3.3 | Mayo de 2016 |
| 2.4 | Noviembre de 2013 | 8 meses | >= 5.3.3 | Julio de 2014 |
| 2.5 | Mayo 2014 | 8 meses | >= 5.3.3 | Enero de 2015 |
| 2.6 | Noviembre de 2014 | 8 meses | ≥ 5.3.3 | Julio de 2015 |
| 2.7 | Mayo de 2015 | 3 años | ≥ 5.3.9 | Mayo de 2019 |
| 2.8 | Noviembre de 2015 | 3 años | ≥ 5.3.9 | Noviembre de 2019 |
| 3.0 | Noviembre de 2015 | 8 meses | ≥ 5.5.9 | Julio de 2016 |
| 3.1 | Mayo de 2016 | 8 meses | ≥ 5.5.9 | Enero de 2017 |
| 3.2 | Noviembre de 2016 | 8 meses | ≥ 5.5.9 | Julio de 2017 |
| 3.3 | Mayo de 2017 | 8 meses | ≥ 5.5.9 | Enero de 2018 |
| 3.4 | Noviembre de 2017 | 3 años | ≥ 5.5.9 | Noviembre de 2021 |
| 4.0 | Noviembre de 2017 | 8 meses | ≥ 7.1.3 | Julio de 2018 |
| 4.1 | Mayo de 2018 | 8 meses | ≥ 7.1.3 | Enero de 2019 |
| 4.2 | Noviembre de 2018 | 8 meses | ≥ 7.1.3 | Julio de 2019 |
| 4.3 | Mayo de 2019 | 8 meses | ≥ 7.1.3 | Julio de 2020 |
| 4.4 | Noviembre de 2019 | 3 años | ≥ 7.1.3 | Noviembre de 2022 |
| 5.0 | Noviembre de 2019 | 8 meses | ≥ 7.1.3 | Julio de 2020 |
| 5.1 | Mayo de 2020 | 8 meses | ≥ 7.1.3 | Enero de 2021 |
| 5.2 | Noviembre de 2020 | 8 meses | ≥ 7.1.3 | Julio de 2021 |
| 5.3 | Mayo de 2021 | 8 meses | ≥ 7.2.5 | Enero de 2022 |
| 5.4 | Noviembre de 2021 | 3 años | ≥ 7.2.5 | Noviembre de 2024 |
| 6.0 | Noviembre de 2021 | 15 meses | ≥ 8.0.2 | Enero de 2023 |
| 6.1 | Mayo de 2022 | 8 meses | ≥ 8.1.0 | Enero de 2023 |
| 6.2 | Noviembre de 2022 | 8 meses | ≥ 8.1.0 | Julio de 2023 |
| 6.3 | Mayo de 2023 | 8 meses | ≥ 8.1.0 | Enero de 2024 |
| 6.4 | Noviembre de 2023 | 3 años | ≥ 8.1.0 | Noviembre de 2026 |
| 7.0 | Noviembre de 2023 | 8 meses | ≥ 8.2.0 | Julio de 2024 |
| 7.1 | Mayo de 2024 | 8 meses | ≥ 8.2.0 | Enero de 2025 |

## Certificación

SensioLabs, la empresa que gestiona Symfony, dispone de un programa de certificación. El examen consta de 75 preguntas de tipo test sobre 16 temas distintos y al superar el examen se pueden conseguir dos niveles: avanzado o experto. El examen es en inglés y está disponible una guía de estudio con 275 preguntas tipo para practicar el examen.