Kint herramienta para debugging en PHP

  • Por
Kint es una librería PHP que nos provee de una herramienta para hacer debug, sustituyendo a los típicos var_dump().

En este artículo os mostramos el funcionamiento de Kint, una librería que nos ofrece una sencilla manera de depurar scripts en PHP por medio de visualización de sus datos en la página. Digamos que no es un debugger como el que puedes tener en un IDE de desarrollo, pero supera bastante a los habitualmente usados var_dump() o print().

El uso es bien sencillo también en cuanto a manejo, tanto como hacer un var_dump(), pero te permite analizar otros asuntos de tus variables y explorar en profundidad las estructuras que tienen dentro. Además, a la hora de mostrar los datos te permite abrir o colapsar la información de detalle para que no ocupen mucho en la página y no nos molesten demasiado para ver en funcionamiento el conjunto del sitio que se está depurando.

En este artículo os daremos unas guías básicas para comenzar a usarlo, aunque para los impacientes, aquí está su URL raveren.github.io/kint

Cómo veo el contenido de mis variables

Antes de contar cómo se usa ¿he dicho ya que es muy fácil?, echemos un vistazo a cómo me muestra las variables. En realidad esto es el resultado de invocar la función "d()" indicando la variable que queremos analizar.

d($mi_variable_a_analizar);

Inicialmente nos muestra la información resumida, como se puede ver en esta imagen:

Luego con el símbolo "+" podemos desplegar el detalle y veremos algo como esto:

Cómo instalar Kint

Te vas a la página del proyecto, lo descargas y guardas las carpetas en algún lugar de tu sistema de archivos del servidor web. Simplemente recuerda dónde lo has dejado y localiza el archivo "Kint.class.php", que es el que vas a tener que incluir en tu página.

include "kint/Kint.class.php";

Nota: Si te lo traes con Composer tienes que definir el siguiente requisito en tu
 composer.json. "require": { "raveren/kint": "0.9" }

A partir de ahora tienes disponible el método estático "dump()" de la clase Kint para volcar el contenido de tus variables con Kint.

$miarray = array(23,45,4556, "desarrolloweb.com");
Kint::dump($miarray);

También tienes el la función "d()", atajo ("shotcut") de Kint::dump().

$f = new Fecha(time());
d($f);

Nota: Puedes indicar que te vuelque varias variables en la misma llamada al método "dump()", simplemente separándolas como parámetros diferentes, por comas.

Reconoce el contenido de tus variables y te lo muestra de manera inteligente

La propia librería, sin que le tengas que decir nada hace un reconocimiento de los valores de las variables y si responden a algún patrón, te muestra los resultados de una manera más legible por las personas. Por ejemplo, si reconoce un timestamp te mostrará la fecha y hora a la que corresponde. Si se trata de un color RGB también te lo muestra con una descripción mejor.

Si es un array de dos dimensiones, te lo pinta en un formato tabular.

Traza de la pila de ejecución

El sistema de debug también tiene la habilidad de devolverte la traza de ejecución en un momento de tu script, es decir, la pila de ejecución de todas las funciones o métodos que se han ido llamando para llegar al punto del código donde te encuentras.

Es algo parecido a lo que consigue con la función nativa de PHP "debug_backtrace()", pero con bastante más información y la facilidad de lectura para personas.

Lo conseguimos simplemente llamando a la al método de clase (estático) "Kint::trace()", de una manera como sigue:

function debuggeando_ando($cadena)
{
// Metodo para ver la traza
Kint::trace();
}
debuggeando_ando('DesarrolloWeb.com');

Otros usos avanzados de Kint

La verdad es que tampoco hay mucho más de lo que hablar, pero podemos mencionar los usos de los métodos "dump()" con modificadores de comportamiento. Simplemente le agregamos antes de la llamada a la función un modificador como:

!Kint::dump($mivariable);

Esto provoca que el detalle de esta variable mostrada esté desplegado, así no tienes que hacer clic en el signo "+" para mostrarlo.

También funcionan los modificadores de comportamiento con la función atajo d().

+d($mivariable);

Con esto conseguimos que esta variable no tenga límite de profundidad (algunos objetos complejos pueden mostrarse sólo en sus datos hasta determinado límite y el propio sistema alerta que no va a seguir mostrando detalle a partir de cierto nivel con un mensaje *DEPTH TOO GREAT*). Con este modificador conseguimos que no haya límite, aunque nos arriesgamos a que el navegador se quede colgado si hay demasiada información.

Otros modificadores son:

@d($dato) que te devuelve la salida de la función, en vez de mostrarla en la página.

­Kint::dump($dato) que borra la salida de la pantalla que se produjo anteriormente, antes de mostrar la salida del mensaje de debug (ten en cuenta que el contenido debe estar todavía en el buffer de salida para que esto funcione y en ocasiones no es así).

Luego está la función "s()" que te muestra el contenido en un formato plano, sin hacerlo bonito con HTML y Javascript.

s($mivariable);

Por último destacaremos dos funciones que muestran el contenido y luego se salen del sistema, como si hiciéramos uso de la función "exit()" de PHP.

sd($mivariable);
dd($mivariable);

La función "sd()" muestra el contenido en texto plano y luego se sale. La función "dd()" muestra el contenido como habitualmente hace Kint, pero luego se sale del script.

Kint es un interesante complemento para desarrollo en PHP. Pruébalo, seguramente lo adoptes en todos tus proyectos para facilitarte las tareas de depuración y parar de hacer los "var_dump()" de toda la vida. Entérate si tu framework los tiene implementados, porque está presente en forma de plugin en varias librerías de las más populares como Codeigniter, Drupal, Symfony, Wordpress, Yii, etc.

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

Sergio Soriano

15/5/2014
Genial
Siempre es bueno tener alternativas, yo uso el clásico X-Debug pero me falla cuando hago uso de Ajax y no me saltan break-point. Herramientas como éstas te salvan la vida, una parecida es FirePHP, muy parecido y que se integra en FireBug de Firefox.

midesweb

15/5/2014
Alternativa a Kint Ladybug
Me comenta @brulics por Twitter que tenemos una alternativa llamada Ladybug:
https://github.com/raulfraile/ladybug

Marco

25/6/2014
yo con xdebug de netbeans
yo el xdebug de netbeans no lo cambio por nada del mundo y con wamp es tan sencillo de instalar como boton derecho y activar , aun asi probare este por ver otras opciones , que nunca se sabe.