Estoy trabajando en un sitio de Drupal y, al depurar, siempre tengo que leer matrices largas y anidadas. Como resultado, paso una gran parte de mi vida usando las teclas de flecha, retorno y tabulación para dividir más de 1000 cadenas de caracteres en un formato anidado y legible.
Para los desarrolladores de drupal, no puedo usar dsm () de devel, ya que estoy trabajando con formularios # ahah / # ajax de varios pasos, y solo puedo enviar las matrices al registro de errores, no a la pantalla.
Ejemplo visual:
Mal:
array ('form_wrapper' => array ('#tree' => true, '#type' => 'fieldset', '#prefix' => '', '#suffix' => '', '#value' = > '', 'name' => array ('#type' => 'textfield', '#title' => NULL, '#size' => 60, '#maxlength' => 60, '#required' = > false, '#description' => NULL, '#attributes' => array ('placeholder' => 'Email',), '#post' => array ('form_wrapper' => array ('nombre' => '', 'pasar' => '',),...
Bueno:
array (
'form_wrapper' => array (
'#tree' => true,
'#type' => 'fieldset',
'#prefix' => '<div>',
'#suffix' => '</div>',
'#value' => '',
'name' => array (
'#type' => 'textfield',
'#title' => NULL,
'#size' => 60,
'#maxlength' => 60,
'#required' => false,
'#description' => NULL,
'#attributes' => array (
'placeholder' => 'Email',
),
Editar : Lo siento, por "no enviar a la pantalla", me refiero a los mensajes del sistema de drupal, donde es posible generar matrices en un formato anidado en el que se puede hacer clic (usando devel.module).
Respuestas:
Si necesita registrar un error en el registro de errores de Apache, puede intentar esto:
fuente
print_r
(en minúsculas). ¿print_R
Realmente funciona también?\n
lugar de líneas nuevas reales.http://php.net/manual/en/function.print-r.php Esta función se puede utilizar para formatear la salida,
$output
es una variable de cadena, se puede registrar como cualquier otra cadena. En php puro puedes usartrigger_error
Ex.
trigger_error($output);
http://php.net/manual/en/function.trigger-error.php
si necesita formatearlo también en html, puede usar la
<pre>
etiquetafuente
if you need to format it also in html
trigger_error
que limita los mensajes a una longitud máxima de 1024 o algo similar. Haciendo que algunasvar_exports
/print_r
cuerdas se corten. Es útil para estructuras simples.Cosas simples:
Usar
print_r
,var_dump
ovar_export
debería hacerlo bastante bien si observa el resultado en el modo de fuente de visualización, no en el modo HTML o como dijo @Joel Larson si envuelve todo en una<pre>
etiqueta.print_r
es mejor para la legibilidad pero no imprime valores nulos / falsos.var_dump
es mejor para comprobar tipos de valores y longitudes y valores nulos / falsos.var_export
es similar a,var_dump
pero se puede usar para obtener la cadena volcada .El formato devuelto por cualquiera de estos está sangrado correctamente en el código fuente y
var_export
se puede utilizar para el registro, ya que se puede utilizar para devolver la cadena volcada.Cosas avanzadas:
Utilice el complemento xdebug para PHP, que imprime los mensajes de correo electrónico
var_dump
como cadenas con formato HTML, no como formato de volcado sin formato y también le permite proporcionar una función personalizada que desee utilizar para formatear.fuente
var_export
permite devolver una cadena.El módulo Devel de Drupal tiene otras funciones útiles, incluidas las que pueden imprimir matrices y objetos formateados en archivos de registro. Consulte la guía en http://ratatosk.net/drupal/tutorials/debugging-drupal.html
fuente
Esto te ayudara
echo '<pre>';
echo '</pre>';
EDITAR
usar
echo '<pre>';
es inútil, perovar_export($var);
hará lo que esperabas.fuente
Debería poder usar un var_dump () dentro de una etiqueta previa. De lo contrario, podría considerar el uso de una biblioteca como dump_r.php: https://github.com/leeoniya/dump_r.phpMi solución es incorrecta. OP estaba buscando una solución formateada con espacios para almacenar en un archivo de registro.
Una solución podría ser usar el búfer de salida con var_dump, luego str_replace () todas las pestañas con espacios para formatearlo en el archivo de registro.
fuente
Me pregunto por qué nadie usa o recomienda la forma en que prefiero depurar una matriz:
Junto a mi navegador,
tail
mi servidor inicia sesión en la consola, por ejemplo.fuente