Nuevo en Symfony 4.1: servidor de depuración

Entre las utilidades que proporciona el componente VarDumper se incluye la función dump(), una versión mucho más avanzada de la función var_dump() de PHP. El problema es que cuando se utiliza dump() por ejemplo al trabajar en una API, la respuesta y la información de depuración se mezclan y es un lío:

class ApiController extends AbstractController
{
    /**
     * @Route("/hello")
     */
    public function hello(Request $request, UserInterface $user)
    {
        dump($request->attributes, $user);
 
        return JsonResponse::create([
            'status' => 'OK',
            'message' => "Hello {$user->getUsername()}"
        ]);
    }
}

Este es un ejemplo de cómo se vería en la consola el resultado de ejecutar ese código:

Para evitar estos problemas, en Symfony 4.1 hemos añadido un servidor dedicado para la depuración de aplicaciones. En la práctica solo tienes que ejecutar el comando server:dump y, a partir de ese momento, cada vez que llames a la función dump(), la información de depuración se envía a un servidor dedicado a ello:

# muestra la información de depuración en la consola:
$ ./bin/console server:dump
  [OK] Server listening on tcp://0.0.0.0:9912
 
# almacena la información de depuración en un archivo HTML:
$ ./bin/console server:dump --format=html > dump.html

Así es como se ve ahora la información de depuración en la consola (incluyendo información de contexto como la ruta del archivo que contiene el dump(), la petición HTTP realizada, el comando ejecutado, etc.):

Y así es como se ve cuando rediriges la salida a un archivo HTML:

Cuando se utiliza este servidor dentro de una aplicación Symfony, se configura a través del paquete debug:

# config/packages/dev/debug.yaml
debug:
    dump_destination: "tcp://%env(VAR_DUMPER_SERVER)%"

Esta funcionalidad fue contribuida por Maxime Steinhausser en el pull request #23831.

Comentarios

Publicada el

30 de abril de 2018

Etiquetas

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.