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
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.