php - print_r - var_dump()
Hacer que var_dump se vea bonito (10)
Tengo un conjunto simple de consultas $_GET[]
para mostrar los datos de prueba al eliminar las consultas de la base de datos.
<?php if($_GET[''test'']): ?>
<div id="test" style="padding: 24px; background: #fff; text-align: center;">
<table>
<tr style="font-weight: bold;"><td>MLS</td></tr>
<tr><td><?php echo KEY; ?></td></tr>
<tr style="font-weight: bold;"><td>QUERY</td></tr>
<tr><td><?php echo $data_q; ?></td></tr>
<tr style="font-weight: bold;"><td>DATA</td></tr>
<tr><td><?php var_dump($data); ?></td></tr>
</table>
</div>
<?php endif; ?>
Cuando hago var_dump
, como es de esperar, es esta gran cadena de matriz la que está totalmente comprimida. ¿Hay alguna manera de agregar saltos de línea al menos para esto o mostrar el var_dump
de una manera que sea más legible? Estoy abierto a las sugerencias de jQuery sobre la manipulación de la cadena después de su publicación.
Aquí está mi función para tener un bonito var_dump. Combinado con Xdebug , ayuda mucho tener una mejor visión de lo que estamos descargando.
Mejore un poco la visualización de Xdebug (dé un poco de espacio, separe los valores, envuelva las variables largas, etc.).
Cuando llama a la función, puede establecer un título, un fondo, un color de texto para distinguir todos sus var_dump en una página.
O no ;)
/**
* Pretty var_dump
* Possibility to set a title, a background-color and a text color
*/
function dump($data, $title="", $background="#EEEEEE", $color="#000000"){
//=== Style
echo "
<style>
/* Styling pre tag */
pre {
padding:10px 20px;
white-space: pre-wrap;
white-space: -moz-pre-wrap;
white-space: -pre-wrap;
white-space: -o-pre-wrap;
word-wrap: break-word;
}
/* ===========================
== To use with XDEBUG
=========================== */
/* Source file */
pre small:nth-child(1) {
font-weight: bold;
font-size: 14px;
color: #CC0000;
}
pre small:nth-child(1)::after {
content: '''';
position: relative;
width: 100%;
height: 20px;
left: 0;
display: block;
clear: both;
}
/* Separator */
pre i::after{
content: '''';
position: relative;
width: 100%;
height: 15px;
left: 0;
display: block;
clear: both;
border-bottom: 1px solid grey;
}
</style>
";
//=== Content
echo "<pre style=''background:$background; color:$color; padding:10px 20px; border:2px inset $color''>";
echo "<h2>$title</h2>";
var_dump($data);
echo "</pre>";
}
He hecho una adición a las respuestas de @AbraCadaver. He incluido un script de JavaScript que eliminará la etiqueta de inicio y cierre de php. Tendremos limpio más basurero.
Puede ser alguien así también.
function dd($data){
highlight_string("<?php/n " . var_export($data, true) . "?>");
echo ''<script>document.getElementsByTagName("code")[0].getElementsByTagName("span")[1].remove() ;document.getElementsByTagName("code")[0].getElementsByTagName("span")[document.getElementsByTagName("code")[0].getElementsByTagName("span").length - 1].remove() ; </script>'';
die();
}
Resultado antes:
Resultado después:
Ahora no tenemos etiqueta de inicio y cierre de php
La mejor y más fácil forma de obtener un buen var_dump es utilizar xDebug (debe tener para cualquier dev php) instalación de manera Debian
En la consola: apt-get install php-xdebug
después de eso debes abrir php.ini (depende de la pila que uses) para que sea /etc/php/7.0/fpm/php.ini
Buscar display_errors
establecer lo mismo -> display_errors = On
Compruebe html_errors
en el mismo archivo un poco más abajo, también debe estar On
Guardar y Salir
Después de abrir /etc/php/7.0/fpm/conf.d/20-xdebug.ini
Y agregue al final: `` `xdebug.cli_color = 1
`` `Guardar y salir.
Aquí se pueden encontrar muchas otras opciones y documentación disponibles para xdebug.
Buena suerte y diviertete !!!
No es exactamente var_dump
, pero es útil: http://dbug.ospinto.com/
Podría usar este debugVar()
lugar de var_dump()
Realmente amo var_export()
. Si le gusta el código de copiar / pegar, intente:
echo ''<pre>'' . var_export($data, true) . ''</pre>'';
O incluso algo como esto para resaltar la sintaxis del color:
highlight_string("<?php/n/$data =/n" . var_export($data, true) . ";/n?>");
También puedes probar Xdebug para volcados de var más informativos
Usar código HTML preformateado
echo ''<pre>'';
var_dump($data);
echo ''</pre>'';
Utilizar
echo nl2br(var_dump());
Esto debería funcionar ^^