Mi experiencia programando con Symfony2

Hace unas horas he publicado ComoGastan.com, un sitio que vigila cómo se gasta el dinero de tus impuestos y que es mi primer proyecto completo desarrollado con Symfony2.

Así que en este artículo voy a opinar sobre lo que me gusta y lo que no de Symfony2. Si no tienes tiempo para leerlo todo, el resumen es que me encanta Symfony2.

Lo que me gusta:

  • Twig para las plantillas. Las plantillas creadas con Twig son concisas, bonitas y hasta los diseñadores más torpes pueden entenderlas. Si usas Django, verás que las plantillas Twig son casi idénticas. Después de usar Twig intensivamente, sólo puedo decir que siento asco cada vez que veo una plantilla PHP. De todas formas, tranquilo porque si los sistemas de plantillas no te convencen, puedes seguir creando tus plantillas con PHP.
  • Seguridad integrada y completa. En Symfony 1.x tenías que instalar plugins para añadir seguridad a tu sitio. Symfony2 ya lo tiene todo incluido: proteger la parte de administración con usuario + contraseña cuesta menos de 10 segundos. Asociar la seguridad del sitio a los usuarios de una base de datos cuesta bastante más ;)
  • Doctrine2. Cuando empecé con Doctrine2 no me gustó mucho, ya que cambia radicalmente todo lo que conocíamos. Después de utilizarlo en una aplicación real hay muchas cosas que me han acabado gustando. Si vienes del mundo Java, te encantará saber que en Symfony2 se trabaja con el Entity Manager y con el Unit of Work.
  • Formularios. Todavía están sin terminar, todavía no están integrados a la perfección con Doctrine2 y todavía tienen muchas carencias ... pero lo que he utilizado hasta ahora me gusta. Mucho mejor que en Symfony 1.
  • Flexibilidad. Symfony 1 es un framework muy flexible, Symfony2 es totalmente flexible. No conozco nada que no se pueda cambiar en Symfony2.
  • Rendimiento. Symfony2 es rapidísimo y hay caches para todo.

Lo que no me gusta:

  • Sin fecha de lanzamiento. El proyecto tiene una gran actividad de desarrollo y lo siguen mejorando cada día, pero todavía no se sabe cuándo va a salir. Particularmente no me importa que se retrase a cambio de que sea mejor, pero creo que debería existir un roadmap en forma de listado de cosas pendientes que quedan por hacer hasta el lanzamiento de la versión 2.0.
  • Documentación. Acostumbrados a la maravillosa documentación de Symfony 1, la de Symfony2 parece escasa, mala y desactualizada. En cualquier caso, este punto sólo es importante ahora mismo, ya que en cuanto salga la versión final de Symfony2 volverán a deslumbrar con una documentación sin igual.
  • Admin generator. Symfony2 no tiene ni va a tener generador de la parte de administración, que es el punto fuerte de Symfony 1. Sinceramente este me parece el mayor error de Symfony2. La razón que dan es que como los formularios no estaban terminados, no se puede hacer el admin generator. Tienen razón, pero sospecho que Symfony 2.1 va a tener admin generator si o si.
  • Verbose. El lema de Symfony 1 era "convención en vez de configuración". El lema de Symfony2 es "explícito en vez de mágico". Esto hace que algunas cosas sean bastante largas de escribir, como por ejemplo los repugnantes namespaces. François Zaninotto lo explicó bien en su artículo anunciando el fin del autoloading en PHP.
  • Falta de detalles. Symfony2 no es un framework pulido. Le faltan esos pequeños detalles que hacen que te encante usarlo.

Resumiendo todo lo anterior, creo que Symfony2 será con mucha diferencia el mejor framework para PHP. El lanzamiento de la versión 2.0 sentará unas bases my sólidas para mejorar el framework durante los cinco años siguientes. Por eso creo que Symfony 2.1, 2.2 y siguientes tendrán muy pocas cosas que envidiar a Django y RubyOnRails.

Obviamente este artículo sólo muestra opiniones personales, así que me encantaría escuchar las vuestras, sobre todo si son contrarias.

Comentarios

  1. Aunque por desgracia hace tiempo que no trabajo profesionalmente con symfony, mi impresión desde la 1.3/1.4 ha sido muy defraudante. Lo que más me atrajo en su día a symfony fue precisamente esa magia que como tu dices se ha ido perdiendo y se pierde completamente en 2.x Una pena.

    También me pareció que la incursión de los formularios, aunque simplificaban (quizá) cosas como la validación, introducían a su vez elementos que complicaban cosas que hasta 1.2 habían sido sencillas.

    Son esas cosas "mágicas" las que me gustaron de symfony y que algunas, por suerte, me he encontrado en GRAILS.

    Sobre el rendimiento, en su día hice una comparativa (simplona) entre GRAILS y symfony 1.4 y el primero era 10 veces más rápido. ¿Alguna comparativa con la rama 2?

    Un Saludo symfoneros!

    kNo el 15 de abril de 2011, 11:37:48

  2. kNo, desde la 1.3/1.4 que comentas no hay nada más que Sf2. Por otra parte he leido algunos comentarios sobre programadores que ya se han acercado a Sf2 y están bastante confundidos respecto a la manera tan 'mágica' e intuitiva de trabajar que tenían con Sf1. Ya veremos cómo será la documentación pero creo que Sf2 va a costar más de adaptar que Sf1.

    David el 15 de abril de 2011, 13:12:32

  3. @David, el problema que comentas es el más común y creo que tiene que ver con la falta de documentación.

    Por el momento en ningún sitio te dicen cuáles son las mejores prácticas para cada parte de la aplicación, así que cada uno hace lo que puede, lo que sabe o lo que ha visto a otros.

    Cuando el primer libro esté terminado, explicarán la forma oficial / buena de hacer las cosas y así ya podremos decidir si seguir ese camino o si queremos cambiar algunas cosas que no nos gusten. En cualquier caso, cuando publiquen el libro, los inicios con Symfony2 ya no serán tan tortuosos.

    Javier Eguiluz el 15 de abril de 2011, 13:21:26

  4. Javier una pregunta... Piensas publicar tu aplicacion (codigo) para que se pueda implementar en otros paises de la misma manera?

    Saludos!

    yahuarkuntur el 15 de abril de 2011, 13:28:28

  5. @Javier. Entiendo la voluntad comercial de cualquier empresa, incluida Sensio, pero... podríamos hacer que esos materiales fuesen tan "open" como fueron al principio del framework.

    Me refiero a que la documentación no sólo esté en la web, sino que se dejen en pdf para que los podamos estudiar fuera del ordenador también. En cualquier caso yo me planteo trabajar en Sf2 como un auténtico reto, ya que las prácticas que propone son enormemente interesantes y están en la avanzadilla de la metodología de la programación.

    David el 15 de abril de 2011, 17:54:04

  6. @ yahuarkuntur, no tengo pensado publicar el código fuente de la aplicación, pero sí que tengo pensado expandir el sitio web al resto del mundo.

    @David, todavía no han publicado la documentación en PDF porque todavía no hay realmente una buena documentación. Sólo son artículos sueltos, totalmente inconexos y muchos de ellos desactualizados.

    De todas formas, ya puedes bajarte toda la documentación a tu ordenador para leerla offline desde su repositorio de github:

    https://github.com/symfony/symfony-docs

    Javier Eguiluz el 15 de abril de 2011, 18:14:08

  7. OT

    Javier, antes que nada te felicito por tu gran trabajo y compartir tus experiencias con la comunidad... he visto algunas cosas de Symfony2 que no me han gustado mucho, pero imagino que como todo, será cuestión de acostumbrarse... estuve revisando tu sitio (comogastan.com) donde vi algunos pdf y me preguntaba (de ahí el OT) si pudieras decirme que librería pdf utilizaste, pues aun no doy con una que me convenza en términos de velocidad, hasta ahora he usado tcpdf

    Moises el 15 de abril de 2011, 23:58:40

  8. Yo si prefiero esperar a que salga la versión final y con documentación en español que es lo que en realidad me encantó de Symfony, su documentación en español porque si tengo que aprender de una documentación en ingles pa esa gracia mejor me voy para ZendFramework

    Bueno, será esperar, igual no tengo prisa, mientras tanto sigo con la 1.4 :)

    Julian Lasso el 16 de abril de 2011, 3:42:04

  9. @Moises, la librería que utilizo para generar PDF se llama Prince XML. Su funcionamiento se basa en convertir un HTML + CSS en un PDF.

    Lo mejor es que soporta propiedades CSS mucho más avanzadas que las de los navegadores, lo que permite un control muy preciso de parámetros importantes de la publicación: http://www.princexml.com/doc/7.0/properties/

    Lo peor es que tiene un precio bastante alto, pero puedes descargarte una demo desde su sitio: http://www.princexml.com

    Javier Eguiluz el 16 de abril de 2011, 7:32:23

  10. Javier, gracias por la información... se ve bastante buena, aunque como comentas el precio es bastante alto... voy a probar la demo a ver que tal va en cuanto a velocidad para generar reportes de tamaño mediano.

    Moises el 16 de abril de 2011, 16:48:51

  11. puedes por favor hacer un tutorial de tu aplicación y compartirlo?

    o al menos ayudar a los newbies, con algún tutorial para que no parezca una revista

    gracias

    cordovaln el 16 de abril de 2011, 18:41:02

  12. @ cordovaln por el momento no voy a publicar ningún tutorial sobre cómo desarrollar aplicaciones con Symfony2.

    Sin embargo, en cuanto me dejen hacerlo, voy a anunciar algo mucho más interesante y que te servirá para aprender a desarrollar aplicaciones con Symfony2.

    Javier Eguiluz el 17 de abril de 2011, 17:41:37

  13. Javier excelente tu artículo. Muy bien explicado y coincido contigo. Andaba buscando algo así. Muchas gracias por el aporte.

    Juan Ardissone el 18 de abril de 2011, 14:53:40

  14. Javier, Estoy leyendon la documentación que hay de Symfony2 y la verdad es que noto a faltar ejemplos donde pueda ver aplicado lo que he entendido a medias, me puedes indicar alguna web donde pueda ver ejemplos funcionando? Muchas gracias

    Ernesto el 18 de abril de 2011, 20:42:31

  15. Hola Javier, enhorabuena por la aplicación.

    Al hilo de lo que comentabas anteriormente de :

    "Sin embargo, en cuanto me dejen hacerlo, voy a anunciar algo mucho más interesante y que te servirá para aprender a desarrollar aplicaciones con Symfony2."

    ¿ Podría ser algún tipo de curso para desarrollar en Symfony2 ?

    Gracias y un saludo.

    Jorge el 19 de abril de 2011, 9:09:43

  16. @Jorge, no es exactamente un curso, pero servirá para aprender a programar con Symfony2. Pero por el momento no puedo decir nada más :(

    Javier Eguiluz el 19 de abril de 2011, 9:24:49

  17. Hola Javier, he estado viendo tu nuevo sitio y me ha parecido una idea muy original, con un estilo muy symfoniano :-) Buen trabajo!

    Por cierto, muy enigmático en tus últimos comentarios, seguiré tus posts muy de cerca para ver con que proyecto nos sorprendes.

    Gracias por todas tus contribuciones.

    Pedro Revueltas el 22 de abril de 2011, 22:53:32

  18. Simplemente el creador de symfony se dio cuenta que symfony 1 no servia y prefirio seguir un estandar mejor como es j2ee, y como algunos dicen que las cosas salen magica pues eso no sirve, no te da la suficiente flexibilidad

    Christopher el 25 de abril de 2011, 18:07:22

  19. Hola me ha gustado mucho como ha quedado tu página, muy rápida y en diseño elegante.

    Yo tengo un proyecto de hace unos 6 meses se llama: www.publicalibre.com la desarrollo en PHP sin ningún framework, pero ahora he visto los grandes beneficios que traen estos marcos de trabajos.

    He descargado dos manuales uno de Symfony 2 y otro de Doctrine 2. Mi consulta es: Con este framework podría adaptar o crear una plataforma idéntica a publicalibre.com con el framework Symfony 2 ?

    Pienso en desarrollar mi sistema con este framework, he visto su tiempo de respuesta en cargar las página y es muy rápido, y el diseño se ve bien elegante también.

    Muchas gracias, Saludos.

    pablo el 9 de diciembre de 2011, 5:29:35

  20. Pablo, por supuesto que con Symfony2 puedes desarrollar algo como el proyecto que mencionas. Si nunca has utilizado un framework o si no conoces todas las últimas novedades de PHP 5.3, te costará un poco al principio ... pero a largo plazo todo son ventajas.

    Javier Eguiluz el 10 de diciembre de 2011, 20:53:20

  21. Admin generator por symfony2 http://symfony2admingenerator.org/ hay tambien el bundle de Sonata pero el primero esta desarollado porchicos de SensioLabs si no me equivocoy entonces, supongo que sera mas este que sera usado en la version 2.1 si lo integran.

    laurent el 13 de febrero de 2012, 14:35:20

  22. Symfony 2 tiene su curva de aprendizaje al igual que las mejoras de php 5.3. Un par de proyectos realizados en Symfony 2 y no querrás tocar Symfony 1, una potencia y flexibilidad impresionantes. Estupendo por doctrine2 que trae muchísimas mejoras y no existe alabanza para Twig, es lo mejor que he visto, no se puede comprarar con sus competidores; smarty, razor... El uso de namespaces y su nuevo core aceleran notablemente nuestra aplicación y desarrollos al igual que la reutilización de código. Faltaría documentar mejor es catellano y ejemplos prácticos. Saludos a toda la comunidad!

    Jonathan Izquierdo Galán el 14 de junio de 2012, 10:56:29

Este artículo ya no permite añadir más comentarios.
¿Por qué? Los artículos cierran sus comentarios automáticamente unos meses después de su publicación para asegurar que estos sigan siendo relevantes.

Publicada el

15 de abril de 2011

Proyectos Symfony destacados

La plataforma de eCommerce 100% Symfony que rivaliza con Magento y PrestaShop. Ver más

Síguenos en @symfony_es para acceder a las últimas noticias.