¿Qué es el debugging y cómo se relacionan las funciones dump y dd?
El proceso de identificar y corregir errores o defectos en un programa de software es conocido como debugging o depuración. En Laravel y Symfony, dos conocidos frameworks de PHP, existen funciones como dump y dd que facilitan este proceso. Estas herramientas permiten inspeccionar el contenido de variables de manera detallada y comprensible, aportando claridad sobre el estado del programa en un punto dado. Sin embargo, estas funciones no están disponibles de manera nativa en PHP, lo cual significa que no se pueden utilizar directamente sin ciertos pasos de configuración.
¿Cómo se integra y utiliza var-dumper en un proyecto PHP?
Para incorporar funcionalidades avanzadas de debugging en PHP, como las proporcionadas por dd, se utiliza la librería var-dumper, parte del ecosistema de Symfony. Para integrarla en un proyecto PHP se sigue el siguiente proceso:
Instalación de Composer: Como primer paso, es necesario tener Composer, un gestor de dependencias para PHP que facilita la incorporación de paquetes como var-dumper.
Descarga de var-dumper: En la terminal, dentro del directorio de tu proyecto, utiliza el comando:
composer require symfony/var-dumper
Esto añadirá la librería a tu lista de dependencias.
Uso del archivo AutoLoad: Debes incluir el archivo AutoLoad.php generado por Composer para hacer accesible dd y otras funciones:
require'vendor/autoload.php';
Al seguir estos pasos, la función dd estará lista para ser utilizada, permitiéndote inspeccionar complejas estructuras de datos de manera visual y estructurada.
¿Cómo se implementa un ejemplo práctico de debugging con dd?
Para entender completamente cómo dd transforma la experiencia de debugging en PHP, veamos un ejemplo práctico. Supongamos que estamos trabajando con un array complejo que contiene información sobre una casa de gatos, que incluye instancias de una clase Michi.
$casaDeMichis=['nombre'=>'Michilango','ubicación'=>['país'=>'México','ciudad'=>'Ciudad de México','colonia'=>'Doctores','número'=>27],'número de Michis'=>3,'michis'=>[newMichi('blanco'),newMichi('negro'),newMichi('gris')]];
Debugging con dd:
Usando dd, podremos observar de manera detallada el contenido de este array:
dd($casaDeMichis);
Al cargar esta estructura en un navegador, dd muestra un esquema interactivo y visualmente atractivo de los datos, facilitando enormemente la tarea de identificación de problemas en nuestro código.
Este enfoque de debugging no solo mejora la legibilidad del código sino que también reduce el tiempo dedicado a examinar meticulosamente cada elemento en estructuras complejas. Ahora que tienes esta poderosa herramienta a tu disposición, ¡es momento de ponerla en práctica en tus proyectos de PHP!
Siento que le falto el curso practico al curso de programacion Poo.
dd() = Dump and Die
ddd() = Dump, Die and Debug
📢 Justo hace unos dias (Septiembre de 2022) la funcion dd fue modificada y ahora muestra tambien el numero de linea desde donde se genero el die(). y desde que contexto se hizo el llamado.
No conocia ddd(), esta interesante probarla, segun entiendo viene implementada con ignition (manejadro de errores de laravel)
al instalar con composer lo que nos sugiere RetaxMaster es mejor hacerlo como dependencias de desarrollo ya que esto no es algo que usemos en producción.
composer require-dev symfony/var-dumper
Ahora en cada proyecto que hago, esta linea es infaltable en el composer.json:
"require-dev":{"symfony/var-dumper":"^6.1"}
En PHP 8 podemos hacer las clases de forma más resumida.
Asi es, esta nueva forma de declarar el scope de una propiedad dentro del constructor se llama:
.
constructor property promotion
La funcion dd()
En Laravel, tenemos una forma increiblemente sencilla y elegante de ahcer debugging. Esta es la funcion dump(). Esta funcion nos provee de un elemento que podemos manipular para ver informacion muy detallada de lo que queramos. La funcion die() ya la hemos usado antes. Nos sirve para terminar la ejemcucion del script en cualquier momento
Estas funciones no se encuentran integradas nativamente en PHP, si no que hacen parte del core de Laravel. Pero se puede replicar en PHP nativo 🏃
Seria abrumador debuggear todo esto cierto? no habria mucha diferencia si usaramos var_dumo verdad? pues por eso existe la funcion dd que podemos instalar con el comando composer require symfony/var-dumper y al final usamos dd con el array complejo que queramos debuggear
require("vendor/autoload.php");//......//Todo el codigo anterior//::....dd($casa_de_michis);
Cuando accedas al navegador notarás que podras interactuar con el debugger de una forma intuitiva, con todo y hasta colores
Por que razon me puede estar saliendo este error " Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 8.1.0". ", si tengo PHP 8.2.2.
Al parecer ya hay un año de esta pregunta, en caso tal, ¿Ya pudiste solucionar dicho error? ¿Puedes tomarle una foto al mismo?
synfony/var-dumper nos habilita 2 funciones
dd() que nos muestra los datos y ejecuta die() al finalizar
debug() que solo muestra los datos y continua su ejecución
según la ruta composer con php es el ultimo curso. tendrían que cambia
Hay un error en el examen, ya que preguntan por la función "die()" cuando claramente se refiere a la función "dd()"
OJO si ves este curso:
Dice que para usar dd necesitamos un package usando composer, esto hace que tecnicamente el proyecto que la incorpore ya no sea PHP puro, pero el reactivo tiene una trampa semántica, por lo que las negaciones son incorrectas.
genial esta super útil, el mejor sensei
No es un debugging completo, un debugging completo sería con xdebug.
por que no ponen el resumen de la clase en texto, como en otros cursos.
Muy buena la función, está muy interactiva e intuitiva.
Tuve unos problemas al correr el script, pero nada que un chmod -R 777 ./dd no solucionara.
sin duda una forma muy amigable de visualizar los datos