Websites con Symfony 4 sin bloat

Symfony 4Yo nunca he sido muy amigo de los frameworks, y menos de los de PHP, por una razón: El bloat, el que un simple website con una home y cuatro páginas ocupe 300 megas y 10000 ficheros. Por eso nunca me gusto Symfony, Laravel o similares. Sin embargo sí me gustaban sus microframeworks, como el Silex (el de Symfony), que permitía hacer websites bastante contenidos de recursos.

Pero la versión 4 de Symfony nos vino con su filosofía de ir creciendo modularmente, como la de los microframeworks. Por lo que me gustó de inmediato. Voy a comentar la fórmula que uso yo para crear websites con este framework y contener el bloat.

No usar su esqueleto de website.

Symfony permite crear un proyecto vacío:
composer create-project symfony/skeleton nombreproyecto
O un proyecto donde ya pone las librerías típicas que se usarán en un website:
composer create-project symfony/website-skeleton nombreproyecto
Este último me parece muy bien, pero a mi no me gusta porque mete demasiado bloat.

Por lo tanto yo siempre parto del primero. Cosas que evito instalar:
  • Doctrine. Instalo solo el Doctrine DBAL, que solo instala una mínima parte de esa enorme librería. DBAL permite hacer las consultas con mysql, que para mi es suficiente.
  • Forms. Otra librería que evito, ya que no me gusta como funciona y como se integra con Twig, además ahora los formularios se envían por Ajax de manera más eficiente. Y la validación del formulario también se hace via Javascript.
  • Webpack encore: No lo utilizo para nada. El proceso de minificar scripts o el preproceso de css prefiero hacerlo yo manualmente para tenerlo controlado.
Y ahora cosas que sí instalo:
cocur/slugify
symfony/twig-bundle
twig/extensions
symfony/translation
doctrine/dbal
symfony/asset
symfony/serializer
Ya que necesito el slugify para crear las URLs amigables, el Twig es un sistema de plantillas muy válido, el sistema de multiidioma es infaltable, y el manejador de assets. Luego el serializer es útil para los formularios por Ajax.

Mas adelante puedes instalar todas las librerías extra que necesites, por ejemplo si necesitas instalar un captcha, le añades google/recaptcha, y si necesitas generar PDF instalas el dompdf/dompdf (evitar instalar el Snappy y Wkhtmltopdf que son enormes y llenas de incompatibilidades).

Solo con esto tienes lo suficiente para generar una web dinámica multiidioma. Y ocupa entre 25 y 30 megas. Quedaría meterle peso con la parte pública, o sea el frontend, ahí ya cada uno sabrá que plantilla es mejor para sus necesidades, pero se llevan las plantillas ligeras que batan el Google Pagespeed, tarea a la que Symfony te ayuda con su caché.
1 comments
  • Richard Muñoz
    31-10-2019 17:48
    Saludos Enrique, Agradezco mucho que compartas está valiosa información de mucha utilidad para desarrolladores que inician en este maravilloso mundo de Symfony, me gustaría que pudieras compartir más información sobre este Framework y las experiencias que has tenido con componentes.
Leave a comment
I have read and accept the Privacy Policy

The comments sent by each user will always be visible in the corresponding post, and will not be used for any other purpose. The user has the right to access, rectify and suppress said comments, as reflected in our Privacy Policy