Je travaille sur un site drupal et lors du débogage, je dois toujours lire de longs tableaux imbriqués. En conséquence, une grande partie de ma vie est passée à utiliser les touches fléchées, de retour et de tabulation, pour diviser plus de 1000 chaînes de caractères dans un format imbriqué et lisible.
Pour les développeurs drupal, je ne peux pas utiliser le dsm () de devel, car je travaille avec des formulaires multi-étapes # ahah / # ajax, et je ne peux afficher les tableaux que dans le journal des erreurs, pas à l'écran.
Exemple visuel:
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 ('name' => '', 'pass' => '',),...
Bien:
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 : Désolé, par "ne pas afficher à l'écran", je voulais dire via les messages système de drupal où il est possible de générer des tableaux dans un format cliquable et imbriqué (en utilisant devel.module).
Réponses:
Si vous devez enregistrer une erreur dans le journal des erreurs Apache, vous pouvez essayer ceci:
la source
print_r
(minuscule). Çaprint_R
marche vraiment aussi?\n
au lieu de nouvelles lignes réelles.http://php.net/manual/en/function.print-r.php Cette fonction peut être utilisée pour formater la sortie,
$output
est une variable de chaîne, elle peut être enregistrée comme toute autre chaîne. En php pur, vous pouvez utilisertrigger_error
Ex.
trigger_error($output);
http://php.net/manual/en/function.trigger-error.php
si vous avez besoin de le formater également en html, vous pouvez utiliser la
<pre>
balisela source
if you need to format it also in html
trigger_error
limitation des messages à une longueur maximale de 1024 ou quelque chose de similaire. Rendre des chaînes plus longuesvar_exports
/ plusprint_r
coupées. C'est utile pour les structures simples.Des trucs simples:
Utiliser
print_r
,var_dump
ouvar_export
devrait le faire assez bien si vous regardez le résultat en mode vue-source et non en mode HTML ou comme @Joel Larson l'a dit si vous enveloppez tout dans une<pre>
balise.print_r
est le meilleur pour la lisibilité mais il n'imprime pas les valeurs nulles / fausses.var_dump
est le meilleur pour vérifier les types de valeurs et de longueurs et les valeurs nulles / fausses.var_export
est similaire àvar_dump
mais il peut être utilisé pour obtenir la chaîne sauvegardée .Le format renvoyé par l'un d'entre eux est correctement mis en retrait dans le code source et
var_export
peut être utilisé pour la journalisation car il peut être utilisé pour renvoyer la chaîne sauvegardée.Trucs avancés:
Utilisez le plug-in xdebug pour PHP, cela imprime
var_dump
des chaînes au format HTML et non un format de vidage brut et vous permet également de fournir une fonction personnalisée que vous souhaitez utiliser pour le formatage.la source
var_export
vous permet de renvoyer une chaîne.Le module Devel de Drupal a d'autres fonctions utiles, y compris celles qui peuvent imprimer des tableaux et des objets formatés dans des fichiers journaux. Consultez le guide sur http://ratatosk.net/drupal/tutorials/debugging-drupal.html
la source
Cela vous aidera
echo '<pre>';
echo '</pre>';
ÉDITER
l'utilisation
echo '<pre>';
est inutile, maisvar_export($var);
fera ce que vous attendez.la source
Vous devriez pouvoir utiliser un var_dump () dans une balise pre. Sinon, vous pourriez envisager d'utiliser une bibliothèque comme dump_r.php: https://github.com/leeoniya/dump_r.phpMa solution est incorrecte. OP recherchait une solution formatée avec des espaces à stocker dans un fichier journal.
Une solution pourrait être d'utiliser la mise en mémoire tampon de sortie avec var_dump, puis str_replace () tous les onglets avec des espaces pour le formater dans le fichier journal.
la source
Je me demande simplement pourquoi personne n'utilise ou ne recommande la façon dont je préfère déboguer un tableau:
À côté de mon navigateur,
tail
mon serveur se connecte à la console, par exemple.la source