Estou trabalhando em um site drupal e, durante a depuração, sempre tenho que ler matrizes longas e aninhadas. Como resultado, uma grande parte da minha vida é gasta usando as teclas de seta, retorno e tab para dividir mais de 1000 strings de caracteres em um formato aninhado e legível.
Para devs drupal, não posso usar o dsm () de devel, pois estou trabalhando com formulários # ahah / # ajax de várias etapas e só posso enviar os arrays para o log de erros, não para a tela.
Exemplo 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 ('nome' => '', 'pass' => '',),...
Boa:
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',
),
Edit : Desculpe, por "não saída para a tela", eu quis dizer via mensagens de sistema do drupal onde é possível gerar matrizes em um formato aninhado clicável (usando devel.module).
Respostas:
Se você precisar registrar um erro no log de erros do Apache, tente o seguinte:
fonte
print_r
(minúsculas). Será queprint_R
realmente funciona bem?\n
vez de novas linhas reais.http://php.net/manual/en/function.print-r.php Esta função pode ser usada para formatar a saída,
$output
é uma variável de string, pode ser registrada como qualquer outra string. Em php puro, você pode usartrigger_error
Ex.
trigger_error($output);
http://php.net/manual/en/function.trigger-error.php
se precisar formatá-lo também em html, você pode usar
<pre>
tagfonte
if you need to format it also in html
trigger_error
ele limita as mensagens a um comprimento máximo de 1024 ou algo semelhante. Fazendo com que algumas cordasvar_exports
/ mais longasprint_r
sejam cortadas. É útil para estruturas simples.Coisas simples:
Usar
print_r
,var_dump
ouvar_export
deve funcionar muito bem se você olhar para o resultado no modo view-source e não no modo HTML ou como @Joel Larson disse se você envolver tudo em uma<pre>
tag.print_r
é melhor para legibilidade, mas não imprime valores nulos / falsos.var_dump
é melhor para verificar tipos de valores e comprimentos e valores nulos / falsos.var_export
é semelhante,var_dump
mas pode ser usado para obter a string despejada.O formato retornado por qualquer um deles é recuado corretamente no código-fonte e
var_export
pode ser usado para registro, pois pode ser usado para retornar a string despejada.Coisas avançadas:
Use o plug-in xdebug para PHP, que imprime
var_dump
s como strings formatadas em HTML, não como formato de dump bruto e também permite fornecer uma função personalizada que deseja usar para formatação.fonte
var_export
permite que você retorne uma string.O módulo Develop do Drupal possui outras funções úteis, incluindo aquelas que podem imprimir arrays formatados e objetos em arquivos de log. Consulte o guia em http://ratatosk.net/drupal/tutorials/debugging-drupal.html
fonte
Isso vai te ajudar
echo '<pre>';
echo '</pre>';
EDITAR
usar
echo '<pre>';
é inútil, masvar_export($var);
fará o que você espera.fonte
Você deve ser capaz de usar um var_dump () dentro de uma tag pre. Caso contrário, você pode usar uma biblioteca como dump_r.php: https://github.com/leeoniya/dump_r.phpMinha solução está incorreta. OP estava procurando uma solução formatada com espaços para armazenar em um arquivo de log.
Uma solução pode ser usar o buffer de saída com var_dump, então str_replace () todas as guias com espaços para formatá-lo no arquivo de log.
fonte
Só me pergunto por que ninguém usa ou recomenda a maneira que prefiro depurar um array:
Ao lado do meu navegador,
tail
meu servidor loga no console, por exemplo.fonte