Depuración en PHP

Facebooktwittergoogle_pluslinkedinmailFacebooktwittergoogle_pluslinkedinmail

Todos nos hemos encontrado, en ocasiones, con scripts que no funcionan cómo deseamos. Caundo llevas tres días (o tres semanas) trabajando en un script para resolver tal o cual necesidad que se ha planteado y “algo” no va bien, o no obtienes el resultado esperado, es enervante (no quiero decir aquí tacos).

Esa es una situación muy común. De hecho, tanto es así que uno de los principios fundamentales de programación dice que “Un programa NUNCA funciona bien a la primera, y si no funciona bien a la primera, ya no funcionará bien nunca“. Quizá es un poco exagerado (un toque de humor), pero, desde luego, si es cierto que ningún programa funciona bien a la primera.

Los desarrolladores de PHP echamos enseguida mano de var_dump(), aquí y allí, para ver el estado de tales o cuales variables durante la ejecución, para comprobar, a cada paso, si el programa hace lo que pensamos que debe hacer. Y eso nos va sacando las castañas del fuego, pero, ahora, tenemos una herramienta de depuración más eficiente, que nos muestra el contenido de nuestras variables de una manera mucho más clara que var_dump(), y nos ayuda en la depuración. Se trata de la librería kint, de raveren, que ha sido concebida para su uso durante el desarrollo.

LA LIBRERÍA Kint

Lo primero que tenemos que hacer es descargarnosla de su sitio web oficial, al que puedes acceder mediante este enlace. Una vez descargada, la descomprimiremos en una carpeta de nuestro sitio, que puede estar en includes, o vendor, o cualquier otra, dónde tú consideres, pero que sea accesible desde la carpeta de tu sitio.

A continuación la incluiremos en el script que necesitamos depurar, así:

include ("../vendor/kint/Kint.class.php");

Por supuesto, la ruta deberás fijarla en cada caso, para que el script de kint sea accesible.

Ahora, suponte que tienes en tu script una matriz cómo la siguiente:

Lo que vemos si hacemos un var_dump() normal ya lo imaginas. Después de todo, seguro que lo has hecho miles de veces. En su lugar vamos a usar la función d(), que viene con la librería kint, así:

d($matrizDeUsuarios);

El resultado que ves en la página es el de la siguiente imagen:

kint_01

Visto así quizá no parece demasiado espectacular ni especialmente útil, pero, ahora, pulsa sobre el icono + que aparece a la izquierda del nombre de la variable, o sobre la barra azul de la misma. Verás tu matriz bidimensional de una forma mucho más cómoda, así:

kint_02

Y, ahora, imagina que has detectado algo que no es lo que esperabas, y ya tienes una pista para retocar el código, pero no quieres recargar la página, porque quieres comparar estos resultados con los nuevos. No hay problema. Pulsa en cualquiera de las pequeñas flechitas azules que ves a la derecha, y se te abrirá una copia de la página, en una pestaña aparte, con los mismos datos, y con una casilla de texto libre para que tomes notas de comparación, así:

kint_03

Ahora ya puedes recargar el script en la pestaña original, y comparar resultados mientras ves tus notas.

Además, kint no sólo te muestra el contenido de tus variables, si no que te lo muestra de una manera “inteligente, pensada para ayudarte a depurar. Observa el siguiente script:

El resultado lo ves a continuación:

kint_04

Cómo ves, kint se da cuenta de que la variable contiene una cadena que puede ser usada para representar un color en CSS y nos muestra el color que representa (en este caso un naranja suave), y la notación en tres formatos diferentes.

Si tienes una variable que quieres ver “desplegada” a la carga de la página, sin tener que pulsar el icono +, puedes preceder la función d() con el signo !, cómo en la siguiente línea:

!d($matrizDeUsuarios);

Si no te gusta un resultado tan colorido y prefieres algo más simple, puedes usar la función s(), en lugar de d(), así:

s($matrizDeUsuarios);

El resultado, con la matriz que hemos usado antes, sería algo cómo esto:

vista_simple

Cómo ves, tan simplón que, en mi opinión, para esto no usamos la librería, pero tenía que mostrártelo.

También podemos usar las funciones dd() o sd(), que muestran los resultados que ya conocemos y, a continuación, interrumpen la ejecución, cómo si hubiéramos puesto la instrucción die(). Esto si es útil en ocasiones durante la depuración.

     

Un comentario:

  1. Pingback: La consola JavaScript del navegador (I) » eldesvandejose.com

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *