Adiós Krumo, hola Symfony VarDumper

Enviado por Juan el Mar, 02/05/2017 - 16:40
Demonstration code as shown by Symfony's VarDump

Todo programador de Drupal 7 que vaya expandiendo sus conocimientos para programar en Drupal 8 se encontrará con una no muy grata sorpresa al utilizar el módulo Devel, herramienta imprescindible para hacer el desarrollo de módulos y temas de manera más llevadera, y es que en Drupal 7 nos acostumbramos a la comodidad de sus funciones dsm y dpm para consultar los variables de variables, arreglos y objetos por igual.

No es que estas funciones hayan desaparecido, sino que la magia de mirar todo cómodamente en un árbol desplegable era posible gracias a una herramienta llamada Krumo. Sí, la desgracia cae en que este proyecto parece abandonado y no ha recibido actualización alguna en bastante tiempo, razón por la que los desarrolladores de Devel han optado por dejar Krumo y el dsm perdió su magia. Tratando de llenar este hueco, han integrado otra herramienta similar llamada Kint que se incluye como un submódulo de Devel.

Sí, amigos, sabemos que su intención ha sido la mejor pero la verdad es que Kint se torna fácilmente inutilizable. En mi experiencia, Klint integrado en Devel se torna muy lento cuando no cuelga por completo el navegador, aun cuando lo he probado en un sitio sin configuraciones complejas y con el tema Bartik más básico de fábrica. ¿Y entonces todo está perdido?

La mejor alternativa que he encontrado a esto es utilizar el componente VarDumper de Symfony. Sólo tenemos que habilitarlo a través de Composer en la consola:

bobby@fischer /var/www/frankie $ composer require symfony/var-dumper
Using version ^3.2 for symfony/var-dumper
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Removing symfony/var-dumper (v3.2.1)
  - Installing symfony/var-dumper (v3.2.4)
    Downloading: 100%         

> Drupal\Core\Composer\Composer::vendorTestCodeCleanup
Writing lock file
Generating autoload files
> Drupal\Core\Composer\Composer::preAutoloadDump
> Drupal\Core\Composer\Composer::ensureHtaccess
bobby@fischer /var/www/frankie $

Después, se habilita VarDumper como dumper predeterminado en la configuración de Devel. Para esto, en Drupal hay que ir a Configuration > Devel Settings y en la sección Variables dumper, seleccionar Symfony var-dumper:

Pantalla de configuración de Devel

Damos clic en Guardar configuración y ahora sólo queda limpiar las cachés, ya sea por medio de la interfaz de Drupal o con el comando drush equivalente:

drush cache-rebuild

Y voilà! El comando dsm() ahora funciona como la función dump() de Symfony, con un mejor rendimiento y mensajes más amigables para la depuración de nuestro código.