Ich arbeite an einer Drupal-Site und muss beim Debuggen immer lange, verschachtelte Arrays durchlesen. Infolgedessen wird ein großer Teil meines Lebens mit den Pfeiltasten, der Eingabetaste und den Tabulatortasten verbracht, um mehr als 1000 Zeichenfolgen in ein verschachteltes, lesbares Format aufzuteilen.
Für Drupal-Entwickler kann ich dsm () von devel nicht verwenden, da ich mit mehrstufigen # ahah / # ajax-Formularen arbeite und die Arrays nur im Fehlerprotokoll und nicht auf dem Bildschirm ausgeben kann.
Visuelles Beispiel:
Böse:
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' => '',),...
Gut:
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',
),
Bearbeiten : Entschuldigung, mit "nicht auf dem Bildschirm ausgeben" meinte ich über die Systemmeldungen von drupal, wo es möglich ist, Arrays in einem anklickbaren, verschachtelten Format (unter Verwendung von devel.module) auszugeben.
Antworten:
Wenn Sie einen Fehler im Apache-Fehlerprotokoll protokollieren müssen, können Sie Folgendes versuchen:
quelle
print_r
(Kleinbuchstaben). Funktioniert das auchprint_R
wirklich?\n
anstelle von tatsächlichen Zeilenumbrüchen aus.http://php.net/manual/en/function.print-r.php Diese Funktion kann zum Formatieren der Ausgabe verwendet werden.
$output
ist eine Zeichenfolgenvariable und kann wie jede andere Zeichenfolge protokolliert werden. In reinem PHP können Sie verwendentrigger_error
Ex.
trigger_error($output);
http://php.net/manual/en/function.trigger-error.php
Wenn Sie es auch in HTML formatieren müssen, können Sie
<pre>
Tag verwendenquelle
if you need to format it also in html
trigger_error
dass Nachrichten auf maximal 1024 Länge oder ähnliches begrenzt werden. Länger machenvar_exports
/print_r
Saiten werden abgeschnitten. Es ist nützlich für einfache Strukturen.Einfaches Zeug:
Mit
print_r
,var_dump
odervar_export
sollte es tun ziemlich gut , wenn Sie in view-source - Modus nicht im HTML - Modus auf dem Ergebnis aussehen oder wie @ Joel Larson sagte , wenn Sie alles in einem Wrap -<pre>
Tag.print_r
ist am besten für die Lesbarkeit geeignet, gibt jedoch keine Null- / Falschwerte aus.var_dump
eignet sich am besten zum Überprüfen von Wertetypen und -längen sowie von Null- / Falschwerten.var_export
ist ähnlich wie,var_dump
aber es kann verwendet werden, um die gedumpte Zeichenfolge zu erhalten.Das von diesen zurückgegebene Format wird im Quellcode korrekt eingerückt und
var_export
kann für die Protokollierung verwendet werden, da es zum Zurückgeben der ausgegebenen Zeichenfolge verwendet werden kann.Fortgeschrittene Sachen:
Verwenden Sie das xdebug-Plug-In für PHP, das
var_dump
als HTML-formatierte Zeichenfolgen und nicht als Raw-Dump-Format gedruckt wird. Außerdem können Sie eine benutzerdefinierte Funktion bereitstellen, die Sie für die Formatierung verwenden möchten.quelle
var_export
können Sie eine Zeichenfolge zurückgeben.Das Devel-Modul von Drupal bietet weitere nützliche Funktionen, darunter solche, mit denen formatierte Arrays und Objekte in Protokolldateien gedruckt werden können. Siehe den Leitfaden unter http://ratatosk.net/drupal/tutorials/debugging-drupal.html
quelle
Das wird dir helfen
echo '<pre>';
echo '</pre>';
BEARBEITEN
Verwenden
echo '<pre>';
ist nutzlos, wird abervar_export($var);
das tun, was Sie erwarten.quelle
Sie sollten in der Lage sein, var_dump () innerhalb eines Pre-Tags zu verwenden. Andernfalls könnten Sie eine Bibliothek wie dump_r.php verwenden: https://github.com/leeoniya/dump_r.phpMeine Lösung ist falsch. OP suchte nach einer Lösung, die mit Leerzeichen zum Speichern in einer Protokolldatei formatiert ist.
Eine Lösung könnte darin bestehen, die Ausgabepufferung mit var_dump zu verwenden und dann alle Registerkarten mit Leerzeichen str_replace () zu verwenden, um sie in der Protokolldatei zu formatieren.
quelle
Ich frage mich nur, warum niemand die Art und Weise verwendet oder empfiehlt, wie ich ein Array lieber debugge:
Neben meinem Browser logge ich
tail
meinen Server in der Konsole ein, z.quelle