¿Te ha gustado el artículo?
1
¿Te ha gustado el artículo?
1

Symfony: un framework PHP adaptable con una comunidad fuerte

En octubre de 2015, la compañía francesa de software SensioLabs publicó el framework de código abierto Symfony que, originariamente, había sido desarrollado con el nombre de Sensio Framework. La inusual ortografía del nuevo nombre se debe principalmente a un esfuerzo por mantener el prefijo de tema y clase sf. El incentivo para su creación fue el lanzamiento, un año antes, de Ruby on Rails y el deseo del equipo de desarrolladores de contar con una plataforma de desarrollo comparable para proyectos PHP. Desde entonces, SensioLabs ha continuado con el desarrollo de Symfony, añadiendo en 2011, por ejemplo, una estructura modular a Symfony 2.

¿Qué es Symfony?

Symfony es una colección de alrededor 30 bibliotecas PHP que pueden descargarse y utilizarse como pack o de forma individual. Más allá de los componentes estándar, el framework también cuenta con módulos adicionales que aumentan su alcance o que pueden utilizarse por separado. De acuerdo con información de SensioLabs, en la última década se han realizado más de 500 millones de descargas de packs individuales así como del framework completo, lo que se refleja en su gran expansión global. Multitud de proyectos, como el sistema de gestión de contenidos Drupal, la herramienta de análisis web Piwik o el software para crear comunidades online phpBB, están basados en componentes Symfony. Todos los packs del framework son reutilizables y están disponibles para su descarga sin ningún coste en la página oficial del proyecto.

Symfony: el framework web y sus componentes

Es sobre todo por su diseño modular por lo que Symfony sirve como base de desarrollo para proyectos web de todo tipo. Cada módulo tiene su propia función, pero no depende de los otros componentes, lo que proporciona a este entorno de trabajo un alto grado de flexibilidad y extensibilidad. Así, por ejemplo, puedes utilizar Symfony como framework de pila completa (full-stack) si necesitas una amplia gama de funciones para tu proyecto web o crear tus propias librerías de Symfony o incluso una versión más liviana del framework. De esta forma ajustarás los componentes a las necesidades de tu aplicación web, independientemente de si se trata de un proyecto corporativo de gran complejidad o de una sencilla página web. Al mismo tiempo, siempre cuentas con la opción de añadir o eliminar módulos en la medida en que lo requieras. 

Entre otros, este framework pone a tu disposición los siguientes componentes:

  • Asset: módulo para generar URL y controlar las versiones de archivos de imágenes, hojas de estilo CSS y aplicaciones JavaScript.
  • ClassLoader: con él se cargan las clases PHP propias automáticamente.
  • Debug: proporciona herramientas de depuración del código PHP que encuentran y clasifican errores.
  • DependencyInjection: define las normas para la producción de objetos de cada proyecto web.
  • EventDispatcher: son los componentes básicos que regulan la comunicación de los módulos individuales en forma de eventos.
  • Form: contiene herramientas que ayudan a crear, de manera sencilla, formularios HTML reutilizables.
  • Templating: instrumentos para la creación de un sistema de plantillas.
  • Translation: módulo para la internacionalización del proyecto.
  • Validator: permite validar las clases creadas.
  • Yaml: carga y guarda archivos .yml.

El modelo-vista-controlador para la estructuración de tu aplicación web

Symfony permite implementar el principio modelo-vista-controlador (MVC, Model-View-Controller). Este patrón de arquitectura clasifica a las aplicaciones en tres áreas:

  • Funcionalidad de los datos y del núcleo (Model)
  • Representación visual de los datos generados (View)
  • Procesamiento de las entradas del usuario (Controller)

El enfoque MVC garantiza un código de programa claro y bien estructurado, así como una alta flexibilidad de los diversos componentes, que, gracias a este concepto, se pueden compartir y reutilizar, pues no están vinculados a datos de entrada específicos. Sin embargo, en este punto hay que señalar que Symfony no forma parte del MCV framework y no contiene ningún componente de modelo integrado. Como consecuencia, cuando creas un nuevo proyecto Symfony, este carecerá de la carpeta de modelos tradicional. Con la ayuda de bibliotecas ORM (Object Relational Mapper) adicionales como Doctrine, recomendada por SensioLabs, o Propel podrás almacenar objetos en sistemas de bases de datos por tus propios medios sin ningún problema.

Para crear la capa de presentación (View) de tu aplicación web, utiliza el módulo Templating y crea las respectivas plantillas que podrás extender con la ayuda de los llamados Helper (objetos PHP). El nivel Controller utiliza el nombre index.php por defecto (lo encontrarás en la carpeta “web”). Como en otros frameworks, en Symfony las entradas del usuario también se llaman “Actions”.

Symfony: PHP como un imán para los usuarios

Symfony es una colección de diferentes bibliotecas PHP, por lo que es necesario tener dicho lenguaje de script instalado para poder usar el framework. La última versión compatible de la serie 2x Symfony 2.8 es necesario contar al menos con PHP 5.3.9. Symfony 3.1 y 3.2 requieren PHP 5.5.9 o superior. Desde el comienzo, el equipo de desarrollo de SensioLabs tuvo como meta crear una colección de componentes para proyectos PHP que pudiera competir con frameworks similares en otros lenguajes. Ruby on Rails impresionó particularmente a los desarrolladores franceses, por lo que, para el establecimiento y mantenimiento de los componentes individuales, tomaron como referencia la estructura del conocido entorno de trabajo Ruby.

El desarrollo continuo y el éxito de Symfony como framework están estrechamente ligados a la historia del lenguaje de script. Debido a que está disponible como lenguaje de código abierto y desde siempre ha gozado de gran popularidad en la escena, en los últimos años se ha beneficiado del trabajo conjunto de varios desarrolladores en su optimización. El gran aumento en su rendimiento, estrechamente relacionado con PHP 7, deja intuir un impacto positivo en el rendimiento de futuras aplicaciones web creadas con Symfony.

Compatibilidad con versiones anteriores y continuidad con versiones futuras

Desde 2013, cada seis meses aparece una nueva versión de Symfony. Aquellos usuarios que se hayan registrado en SensioLabsConnect son notificados puntualmente por correo electrónico. Las actualizaciones semestrales a una nueva versión suenan, en principio, como algo engorroso y poco práctico para aplicaciones web de gran complejidad. Sin embargo, SensioLabs ofrece las soluciones adecuadas que garantizan al framework y a los desarrolladores la continuidad necesaria:

  • Compatibilidad con versiones anteriores: todas las actualizaciones de Symfony desde la versión 2.3 se caracterizan por su compatibilidad con versiones anteriores. Esto garantiza la funcionalidad de las aplicaciones desarrolladas incluso cuando se actualiza a una versión superior. Sin embargo, existen algunas excepciones donde no se aplica la promesa de compatibilidad, incluyendo grandes lanzamientos como la Symfony 3.0 (4.0, etc).
  • Soporte a largo plazo: por lo general, las versiones de Symfony gozan de soporte durante 8 meses. Con el lanzamiento de la versión 2.3, SensioLabs publicó la primera edición de Symfony con soporte a largo plazo (TLS). La duración de las versiones con TLS está prevista para dos años y garantizan actualizaciones para errores de programación durante durante 36 meses y parches de seguridad durante 48. Además de la segunda versión TLS programada, la 2.7, también se equipó a la versión 2.8 con soporte a largo plazo. 
  • “Proceso de migración continua” para la versión 3.0: el cambio a la última versión principal de Symfony 3.0 viene acompañado del concepto Continuous Upgrade Path (algo así como “ruta de actualización continua”). Los desarrolladores de aplicaciones Symfony pueden obtener instrucciones detalladas para revisar las líneas de código en las versiones 2.x y, así, adaptarlas a las nuevas especificaciones para, a continuación, actualizar a la nueva versión del framework de aplicaciones web.

Las ventajas y desventajas de Symfony como framework

La búsqueda del framework PHP adecuado es como encontrar una aguja en un pajar: el deseo de tener poderosas bibliotecas para el lenguaje web elegido condujo al desarrollo de numerosos y diversos representantes adecuados para diversos tipos de proyecto. Gracias al progreso continuo, algunos de estos frameworks (entre ellos Symfony) lograron convencer a un gran número de desarrolladores PHP. Este entorno de trabajo sobresale especialmente en la estructuración y funcionamiento de módulos individuales que facilitan la realización de diversas aplicaciones web, logrando, con razón, una gran acogida dentro de la comunidad. Con las versiones de soporte a largo plazo y la promesa general de alta compatibilidad con versiones anteriores, el equipo de desarrolladores de SensioLabs ha fijado las bases adecuadas para garantizar la continuidad de los proyectos Symfony.

Por otro lado, a pesar de la asistencia ofrecida, la transición a nuevas versiones del framework y los esfuerzos relacionados a los ajustes en el código de la aplicación ya desarrollada puede convertirse en un asunto bastante tedioso. En general, la complejidad es el gran problema de la mayoría de entornos de trabajo PHP. Aunque encontrarás documentación general y explicaciones específicas para cada módulo, para los principiantes es difícil familiarizarse con este framework. Otra de las debilidades de Symfony es su rendimiento, incluso en comparación con otros frameworks PHP. Aquí, el generalmente aceptado uso intensivo de los recursos de Doctrine, la biblioteca ORM, desempeña un papel importante.

¿A quién está destinada la colección de componentes PHP?

Todos los módulos de Symfony se caracterizan por que funcionan tanto individualmente como en combinación con otros. En este último caso, sin embargo, no se trata necesariamente del pack estándar, pues también es posible crear un micro entorno de trabajo compuesto únicamente por aquellos elementos necesarios para tu proyecto individual. De esta manera se evita una estructura de bibliotecas sobrecargada que va mucho más allá de las exigencias del proyecto. Por otro lado, Symfony es fácilmente escalable y, valiéndose de módulos adicionales, se adapta rápidamente a las necesidades de proyectos web más exigentes. Así, y como hemos mencionado anteriormente, este framework no solo ha servido como base de numerosas aplicaciones web (total o parcialmente) sino también para proyectos de gran envergadura como, por ejemplo, el servicio de reproducción de música online Spotify. La página web de la reconocida revista de moda Vogue también se encuentra entre los beneficiarios de este entorno PHP.

Si se trabaja con PHP en un proyecto que demanda un alto grado de flexibilidad, Symfony es la mejor alternativa. Sin embargo, y con el fin de utilizar las bibliotecas individuales correctamente, son necesarios conocimientos avanzados sobre este lenguaje de script. Es fundamental que dispongas del tiempo suficiente para llegar a conocer las peculiaridades de este framework y, finalmente, que disfrutes de los beneficios del desarrollo web con Symfony.

Digitalización Big Data Sistemas de Almacenamiento