Forma elegante de imprimir arrays con print_r

2 feb 2012, 04:00:18
Vistas: 18.8K
Votos: 7

Sabes cómo Drupal tiene funciones en módulos como Devel que permiten mostrar arrays en un formato legible como dsm($array) o krumo($array)... ¿WordPress tiene algo equivalente o una forma elegante de mostrar print_r($array)?

2
Comentarios

¿Qué tiene de malo var_dump() o print_r()? ¿Qué es exactamente lo que buscas? (Lo siento, no conozco Drupal tan bien...)

krembo99 krembo99
2 feb 2012 04:27:41

krumo permite a los usuarios imprimir arrays en una lista formateada que se expande al hacer clic. Así que en lugar de tener salidas de print_r envueltas en <pre> por todas partes, terminas con unas listas desplegables muy bonitas. ¡Mucho más agradable de mostrar!

emc emc
2 feb 2012 04:36:42
Todas las respuestas a la pregunta 6
1
12

He creado un plugin Kint que funciona muy bien. También se integra con el plugin Debug Bar. Puedes descargarlo en: http://wordpress.org/extend/plugins/kint-debugger/

Hay algunas funciones para ayudarte con las variables globales específicas de WordPress:

  • dump_wp_query()
  • dump_wp()
  • dump_post()

Para imprimir arrays en un formato estilizado y plegable, harías lo siguiente:

$foo_bar = array(
    'foo' => 'bar',
    'bar' => 'oof',
    'rab' => 'foo'
);
d($foo_bar); //Estilizado
s($foo_bar); //Sin estilo
15 feb 2012 17:41:20
Comentarios

Qué gran idea, gracias.

Wyck Wyck
16 feb 2012 00:18:48
0

Puedes instalar y usar Krumo con WordPress (o cualquier aplicación PHP realmente). Existe el plugin Hikari Krumo que simplifica su uso, aunque revisa los comentarios allí, hay un error que necesitarás corregir manualmente para que funcione con la última versión de WP. También está el plugin Debug Bar de WordPress que podrías encontrar útil.

EDIT - Otra opción que he descubierto recientemente, Kint; captura de pantalla:

Captura de pantalla de Kint

2 feb 2012 04:27:06
5

Para este tipo de cosas, escribí REF (requiere PHP 5.3). Entre muchas otras características, muestra el contenido de los comentarios DocBlock y convierte en enlaces las clases, métodos y funciones internas de PHP (los enlaces apuntan al manual de PHP). También maneja funciones de WordPress (los enlaces apuntan a queryposts.com).

Aquí está la salida de $GLOBALS en la etapa setup de WordPress en modo HTML (r($GLOBALS); en functions.php):

Visualización de $GLOBALS en WordPress

4 ene 2013 00:55:31
Comentarios

+1 para el usuario de la base de datos root y una contraseña vacía.

fuxia fuxia
4 ene 2013 13:52:42

jaja, nunca pensé que WP realmente almacenaría eso también :)

onetrickpony onetrickpony
4 ene 2013 14:01:04

Un truco, la imagen desapareció.

brasofilo brasofilo
2 abr 2013 18:06:29

Parece que me aparece. He añadido uno nuevo para reflejar las últimas actualizaciones de este script

onetrickpony onetrickpony
2 abr 2013 19:25:54

¡¡Esto es increíble!! MUY necesario.

emc emc
17 may 2013 19:02:55
0

Si simplemente envuelves el print_r() en etiquetas <pre> se mostrará de forma hermosa. Si buscas un diagnóstico un poco mejor que eso, black box y la barra de depuración publicada por @Milo son mis preferidos.

2 feb 2012 04:30:40
0

También puedes usar el plugin Debug Objects; que también lista los scripts y estilos. Este plugin tiene muchas más opciones para desarrollo y depuración, pero también incluye esta funcionalidad.

Una alternativa es esta fuente, puedes encontrar información y el post sobre este tema aquí:

add_action('wp_footer', 'fb_urls_of_enqueued_stuff');
add_action('admin_footer', 'fb_urls_of_enqueued_stuff');
function fb_urls_of_enqueued_stuff( $handles = array() ) {
    global $wp_scripts, $wp_styles;
    // scripts
    foreach ( $wp_scripts -> registered as $registered )
        $script_urls[ $registered -> handle ] = $registered -> src;
    // styles
    foreach ( $wp_styles -> registered as $registered )
        $style_urls[ $registered -> handle ] = $registered -> src;
    // if empty
    if ( empty( $handles ) ) {
        $handles = array_merge( $wp_scripts -> queue, $wp_styles -> queue );
        array_values( $handles );
    }
    // output of values
    $output = '';
    foreach ( $handles as $handle ) {
        if ( ! empty( $script_urls[ $handle ] ) )
            $output .= $script_urls[ $handle ] . '<br />';
        if ( ! empty( $style_urls[ $handle ] ) )
            $output .= $style_urls[ $handle ] . '<br />';
    }
    echo $output;
}
2 feb 2012 15:35:42
1

¿Por qué no simplemente usar xdebug?

Parece bastante limpio por defecto, a mi parecer.

Captura de pantalla de xdebug

También existe Kint, http://code.google.com/p/kint/ pero encontré los menús desplegables más confusos que la salida completa de xdebug.

2 feb 2012 19:22:14
Comentarios

+1 Y no olvides configurarlo en tu archivo php.ini para evitar esos molestos ... para cosas anidadas.

kaiser kaiser
4 ene 2013 13:58:56