En octubre de 2015, la compañía francesa de software Se­n­sio­La­bs publicó el framework de código abierto Symfony que, ori­gi­na­ria­me­n­te, había sido de­sa­rro­lla­do con el nombre de Sensio Framework. La inusual or­to­gra­fía del nuevo nombre se debe pri­n­ci­pa­l­me­n­te a un esfuerzo por mantener el prefijo de tema y clase sf. El incentivo para su creación fue el la­n­za­mie­n­to, un año antes, de Ruby on Rails y el deseo del equipo de de­sa­rro­lla­do­res de contar con una pla­ta­fo­r­ma de de­sa­rro­llo co­m­pa­ra­ble para proyectos PHP. Desde entonces, Se­n­sio­La­bs ha co­n­ti­nua­do con el de­sa­rro­llo de Symfony, añadiendo en 2011, por ejemplo, una es­tru­c­tu­ra modular a Symfony 2.

¿Qué es Symfony?

Symfony es una colección de alrededor 30 bi­blio­te­cas PHP que pueden de­s­ca­r­gar­se y uti­li­zar­se como pack o de forma in­di­vi­dual. Más allá de los co­m­po­ne­n­tes estándar, el framework también cuenta con módulos adi­cio­na­les que aumentan su alcance o que pueden uti­li­zar­se por separado. De acuerdo con in­fo­r­ma­ción de Se­n­sio­La­bs, en la última década se han realizado más de 500 millones de descargas de packs in­di­vi­dua­les 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 co­n­te­ni­dos Drupal, la he­rra­mie­n­ta de análisis web Piwik o el software para crear co­mu­ni­da­des online phpBB, están basados en co­m­po­ne­n­tes Symfony. Todos los packs del framework son re­uti­li­za­bles y están di­s­po­ni­bles para su descarga sin ningún coste en la página oficial del proyecto.

Symfony: el framework web y sus co­m­po­ne­n­tes

Es sobre todo por su diseño modular por lo que Symfony sirve como base de de­sa­rro­llo para proyectos web de todo tipo. Cada módulo tiene su propia función, pero no depende de los otros co­m­po­ne­n­tes, lo que pro­po­r­cio­na a este entorno de trabajo un alto grado de fle­xi­bi­li­dad y ex­te­n­si­bi­li­dad. 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 co­m­po­ne­n­tes a las ne­ce­si­da­des de tu apli­ca­ción web, in­de­pe­n­die­n­te­me­n­te de si se trata de un proyecto co­r­po­ra­ti­vo de gran co­m­ple­ji­dad 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 di­s­po­si­ción los si­guie­n­tes co­m­po­ne­n­tes:

  • Asset: módulo para generar URL y controlar las versiones de archivos de imágenes, hojas de estilo CSS y apli­ca­cio­nes Ja­va­S­cri­pt.
  • Cla­s­s­Loa­der: con él se cargan las clases PHP propias au­to­má­ti­ca­me­n­te.
  • Debug: pro­po­r­cio­na he­rra­mie­n­tas de de­pu­ra­ción del código PHP que en­cue­n­tran y cla­si­fi­can errores.
  • De­pe­n­de­n­c­yI­n­je­c­tion: define las normas para la pro­du­c­ción de objetos de cada proyecto web.
  • Eve­n­t­Di­s­pa­t­cher: son los co­m­po­ne­n­tes básicos que regulan la co­mu­ni­ca­ción de los módulos in­di­vi­dua­les en forma de eventos.
  • Form: contiene he­rra­mie­n­tas que ayudan a crear, de manera sencilla, fo­r­mu­la­rios HTML re­uti­li­za­bles.
  • Te­m­pla­ti­ng: in­s­tru­me­n­tos para la creación de un sistema de pla­n­ti­llas.
  • Tra­n­s­la­tion: módulo para la in­te­r­na­cio­na­li­za­ción del proyecto.
  • Validator: permite validar las clases creadas.
  • Yaml: carga y guarda archivos .yml.

Consejo

¿Sabías que Symfony y Laravel están entre los fra­me­wo­r­ks PHP más populares? Te mostramos por qué son tan buenos.

El modelo-vista-co­n­tro­la­dor para la es­tru­c­tu­ra­ción de tu apli­ca­ción web

Symfony permite im­ple­me­n­tar el principio modelo-vista-co­n­tro­la­dor (MVC, Model-View-Co­n­tro­ller). Este patrón de ar­qui­te­c­tu­ra clasifica a las apli­ca­cio­nes en tres áreas:

  • Fu­n­cio­na­li­dad de los datos y del núcleo (Model)
  • Re­pre­se­n­ta­ción visual de los datos generados (View)
  • Pro­ce­sa­mie­n­to de las entradas del usuario (Co­n­tro­ller)

El enfoque MVC garantiza un código de programa claro y bien es­tru­c­tu­ra­do, así como una alta fle­xi­bi­li­dad de los diversos co­m­po­ne­n­tes, que, gracias a este concepto, se pueden compartir y re­uti­li­zar, pues no están vi­n­cu­la­dos a datos de entrada es­pe­cí­fi­cos. Sin embargo, en este punto hay que señalar que Symfony no forma parte del MCV framework y no contiene ningún co­m­po­ne­n­te de modelo integrado. Como co­n­se­cue­n­cia, cuando creas un nuevo proyecto Symfony, este carecerá de la carpeta de modelos tra­di­cio­nal. Con la ayuda de bi­blio­te­cas ORM (Object Re­la­tio­nal Mapper) adi­cio­na­les como Doctrine, re­co­me­n­da­da por Se­n­sio­La­bs, 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 pre­se­n­ta­ción (View) de tu apli­ca­ción web, utiliza el módulo Te­m­pla­ti­ng y crea las re­s­pe­c­ti­vas pla­n­ti­llas que podrás extender con la ayuda de los llamados Helper (objetos PHP). El nivel Co­n­tro­ller utiliza el nombre index.php por defecto (lo en­co­n­tra­rás en la carpeta “web”). Como en otros fra­me­wo­r­ks, 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 di­fe­re­n­tes bi­blio­te­cas PHP, por lo que es necesario tener dicho lenguaje de script instalado para poder usar el framework. La última versión co­m­pa­ti­ble 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 de­sa­rro­llo de Se­n­sio­La­bs tuvo como meta crear una colección de co­m­po­ne­n­tes para proyectos PHP que pudiera competir con fra­me­wo­r­ks similares en otros lenguajes. Ruby on Rails im­pre­sio­nó pa­r­ti­cu­la­r­me­n­te a los de­sa­rro­lla­do­res franceses, por lo que, para el es­ta­ble­ci­mie­n­to y ma­n­te­ni­mie­n­to de los co­m­po­ne­n­tes in­di­vi­dua­les, tomaron como re­fe­re­n­cia la es­tru­c­tu­ra del conocido entorno de trabajo Ruby. El de­sa­rro­llo continuo y el éxito de Symfony como framework están es­tre­cha­me­n­te ligados a la historia del lenguaje de script. Debido a que está di­s­po­ni­ble como lenguaje de código abierto y desde siempre ha gozado de gran po­pu­la­ri­dad en la escena, en los últimos años se ha be­ne­fi­cia­do del trabajo conjunto de varios de­sa­rro­lla­do­res en su op­ti­mi­za­ción. El gran aumento en su re­n­di­mie­n­to, es­tre­cha­me­n­te re­la­cio­na­do con PHP 7, deja intuir un impacto positivo en el re­n­di­mie­n­to de futuras apli­ca­cio­nes web creadas con Symfony.

Co­m­pa­ti­bi­li­dad con versiones an­te­rio­res y co­n­ti­nui­dad con versiones futuras

Desde 2013, cada seis meses aparece una nueva versión de Symfony. Aquellos usuarios que se hayan re­gi­s­tra­do en Se­n­sio­La­b­s­Co­n­ne­ct son no­ti­fi­ca­dos pu­n­tua­l­me­n­te por correo ele­c­tró­ni­co. Las ac­tua­li­za­cio­nes se­me­s­tra­les a una nueva versión suenan, en principio, como algo engorroso y poco práctico para apli­ca­cio­nes web de gran co­m­ple­ji­dad. Sin embargo, Se­n­sio­La­bs ofrece las so­lu­cio­nes adecuadas que ga­ra­n­ti­zan al framework y a los de­sa­rro­lla­do­res la co­n­ti­nui­dad necesaria:

  • Co­m­pa­ti­bi­li­dad con versiones an­te­rio­res: todas las ac­tua­li­za­cio­nes de Symfony desde la versión 2.3 se ca­ra­c­te­ri­zan por su co­m­pa­ti­bi­li­dad con versiones an­te­rio­res. Esto garantiza la fu­n­cio­na­li­dad de las apli­ca­cio­nes de­sa­rro­lla­das incluso cuando se actualiza a una versión superior. Sin embargo, existen algunas ex­ce­p­cio­nes donde no se aplica la promesa de co­m­pa­ti­bi­li­dad, in­clu­ye­n­do grandes la­n­za­mie­n­tos 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 la­n­za­mie­n­to de la versión 2.3, Se­n­sio­La­bs 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 ga­ra­n­ti­zan ac­tua­li­za­cio­nes para errores de pro­gra­ma­ción durante durante 36 meses y parches de seguridad durante 48. Además de la segunda versión TLS pro­gra­ma­da, 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 aco­m­pa­ña­do del concepto Co­n­ti­nuous Upgrade Path (algo así como “ruta de ac­tua­li­za­ción continua”). Los de­sa­rro­lla­do­res de apli­ca­cio­nes Symfony pueden obtener in­s­tru­c­cio­nes de­ta­lla­das para revisar las líneas de código en las versiones 2.x y, así, ada­p­tar­las a las nuevas es­pe­ci­fi­ca­cio­nes para, a co­n­ti­nua­ción, ac­tua­li­zar a la nueva versión del framework de apli­ca­cio­nes web.

Las ventajas y de­s­ve­n­ta­jas de Symfony como framework

La búsqueda del framework PHP adecuado es como encontrar una aguja en un pajar: el deseo de tener poderosas bi­blio­te­cas para el lenguaje web elegido condujo al de­sa­rro­llo de numerosos y diversos re­pre­se­n­ta­n­tes adecuados para diversos tipos de proyecto. Gracias al progreso continuo, algunos de estos fra­me­wo­r­ks (entre ellos Symfony) lograron convencer a un gran número de de­sa­rro­lla­do­res PHP. Este entorno de trabajo sobresale es­pe­cia­l­me­n­te en la es­tru­c­tu­ra­ción y fu­n­cio­na­mie­n­to de módulos in­di­vi­dua­les que facilitan la rea­li­za­ción de diversas apli­ca­cio­nes 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 co­m­pa­ti­bi­li­dad con versiones an­te­rio­res, el equipo de de­sa­rro­lla­do­res de Se­n­sio­La­bs ha fijado las bases adecuadas para ga­ra­n­ti­zar la co­n­ti­nui­dad de los proyectos Symfony.

Por otro lado, a pesar de la asi­s­te­n­cia ofrecida, la tra­n­si­ción a nuevas versiones del framework y los esfuerzos re­la­cio­na­dos a los ajustes en el código de la apli­ca­ción ya de­sa­rro­lla­da puede co­n­ve­r­ti­r­se en un asunto bastante tedioso. En general, la co­m­ple­ji­dad es el gran problema de la mayoría de entornos de trabajo PHP. Aunque en­co­n­tra­rás do­cu­me­n­ta­ción general y ex­pli­ca­cio­nes es­pe­cí­fi­cas para cada módulo, para los pri­n­ci­pia­n­tes es difícil fa­mi­lia­ri­zar­se con este framework. Otra de las de­bi­li­da­des de Symfony es su re­n­di­mie­n­to, incluso en co­m­pa­ra­ción con otros fra­me­wo­r­ks PHP. Aquí, el ge­ne­ra­l­me­n­te aceptado uso intensivo de los recursos de Doctrine, la bi­blio­te­ca ORM, desempeña un papel im­po­r­ta­n­te.

¿A quién está destinada la colección de co­m­po­ne­n­tes PHP?

Todos los módulos de Symfony se ca­ra­c­te­ri­zan por que funcionan tanto in­di­vi­dua­l­me­n­te como en co­m­bi­na­ción con otros. En este último caso, sin embargo, no se trata ne­ce­sa­ria­me­n­te del pack estándar, pues también es posible crear un micro entorno de trabajo compuesto úni­ca­me­n­te por aquellos elementos ne­ce­sa­rios para tu proyecto in­di­vi­dual. De esta manera se evita una es­tru­c­tu­ra de bi­blio­te­cas so­bre­ca­r­ga­da que va mucho más allá de las exi­ge­n­cias del proyecto. Por otro lado, Symfony es fá­ci­l­me­n­te escalable y, va­lié­n­do­se de módulos adi­cio­na­les, se adapta rá­pi­da­me­n­te a las ne­ce­si­da­des de proyectos web más exigentes. Así, y como hemos me­n­cio­na­do an­te­rio­r­me­n­te, este framework no solo ha servido como base de numerosas apli­ca­cio­nes web (total o pa­r­cia­l­me­n­te) sino también para proyectos de gran en­ve­r­ga­du­ra como, por ejemplo, el servicio de re­pro­du­c­ción de música online Spotify. La página web de la re­co­no­ci­da revista de moda Vogue también se encuentra entre los be­ne­fi­cia­rios de este entorno PHP.

Si se trabaja con PHP en un proyecto que demanda un alto grado de fle­xi­bi­li­dad, Symfony es la mejor al­te­r­na­ti­va. Sin embargo, y con el fin de utilizar las bi­blio­te­cas in­di­vi­dua­les co­rre­c­ta­me­n­te, son ne­ce­sa­rios co­no­ci­mie­n­tos avanzados sobre este lenguaje de script. Es fu­n­da­me­n­tal que dispongas del tiempo su­fi­cie­n­te para llegar a conocer las pe­cu­lia­ri­da­des de este framework y, fi­na­l­me­n­te, que disfrutes de los be­ne­fi­cios del de­sa­rro­llo web con Symfony.

Ir al menú principal