Den Zustand Ihres PHP-Codes untersuchen


Wenn Sie PHP-Code debuggen, kann es hilfreich sein, den Zustand Ihres Codes zu einem bestimmten Zeitpunkt zu untersuchen. Dies kann Ihnen helfen zu verstehen, was in Ihrem Code passiert, und Probleme zu erkennen, die möglicherweise Schwierigkeiten verursachen.

Sehen wir uns einige Möglichkeiten an, wie Sie den Zustand Ihres PHP-Codes mithilfe integrierter PHP-Funktionen untersuchen können.

Verwenden von error_log() zum Protokollieren von Nachrichten

Wie in der Lektion zu den integrierten WordPress-Debugging-Optionen besprochen, können Sie die Funktion error_log() verwenden, um Nachrichten in die WordPress-Datei debug.log zu schreiben.

Dies kann zu Debugging-Zwecken nützlich sein, da Sie dadurch sehen können, was in Ihrem Code passiert, ohne es auf dem Bildschirm anzuzeigen.

Die Funktion error_log() ist nicht spezifisch für WordPress. Sie ist eine PHP-Funktion, die Sie in jedem PHP-Code verwenden können, um Nachrichten in die auf dem Server konfigurierte PHP-Fehlerprotokolldatei zu schreiben.

Sobald Sie jedoch die WordPress-spezifischen Debugging-Optionen in Ihrer Datei wp-config.php aktivieren, wird alles, was an error_log() übergeben wird, in die WordPress-Datei debug.log geschrieben.

error_log( $some_variable );

Dadurch wird der Wert von $some_variable in die Datei debug.log geschrieben, sodass Sie sehen können, welchen Inhalt die Variable an dieser Stelle in Ihrem Code hat.

Der Vorteil der Verwendung von error_log() besteht darin, dass Sie Nachrichten in eine Datei schreiben können, ohne sie auf dem Bildschirm anzuzeigen. Wenn Sie sie auf dem Bildschirm anzeigen, insbesondere in einer Produktionsumgebung, riskieren Sie, vertrauliche Informationen für Benutzer offenzulegen.

Außerdem ist es manchmal schneller, die Ausgabe in einer Protokolldatei zu sehen, anstatt eine lange Liste von Ausgaben auf dem Bildschirm durchsuchen zu müssen.

Verwenden von print_r()

Eine weitere nützliche Funktion zur Untersuchung des Zustands Ihres PHP-Codes ist print_r(). Diese Funktion gibt den Wert einer Variablen, eines Arrays oder eines Objekts in einem für Menschen lesbaren Format aus, sodass Sie sehen können, welchen Inhalt es hat.

Sehen Sie sich diesen Beispielcode in PHP an.

$some_array = array( 'apple', 'banana', 'cherry' );
print_r( $some_array );

Dieser Code gibt Folgendes auf dem Bildschirm aus:

Array ( [0] => apple [1] => banana [2] => cherry )

Entwickler schließen print_r() häufig in <pre>-Tags ein, um die Ausgabe besser lesbar zu machen.

echo '<pre>';
print_r( $some_array );
echo '</pre>';

Dadurch wird Folgendes auf dem Bildschirm ausgegeben:

Array
(
    [0] => apple
    [1] => banana
    [2] => cherry
)

Beachten Sie, dass print_r() standardmäßig den Wert der Variablen ausgibt, ihn jedoch nicht zurückgibt. Wenn Sie die Ausgabe von print_r() mit error_log() verwenden möchten, müssen Sie den zweiten Parameter auf true setzen.

error_log( print_r( $some_array, true ) );

Dadurch wird die Ausgabe des Aufrufs von print_r in die Datei debug.log geschrieben, sodass Sie sehen können, welchen Inhalt $some_array an dieser Stelle in Ihrem Code hat.

Verwenden von var_dump()

Die Funktion var_dump() ist eine weitere nützliche Funktion zur Untersuchung des Zustands Ihres PHP-Codes. Diese Funktion gibt den Wert einer Variablen, eines Arrays oder eines Objekts in einem für Menschen lesbaren Format aus, zusammen mit zusätzlichen Informationen über den Variablentyp und die Länge.

Sehen Sie sich diesen Beispielcode in PHP an.

$some_array = array( 'apple', 'banana', 'cherry' );
echo '<pre>';
var_dump( $some_array );
echo '</pre>';

Dieser Code gibt Folgendes auf dem Bildschirm aus:

array(3) {
  [0]=>
  string(5) "apple"
  [1]=>
  string(6) "banana"
  [2]=>
  string(6) "cherry"
}

Beachten Sie, dass var_dump() den Wert der Variablen zusammen mit zusätzlichen Informationen über den Variablentyp und die Länge ausgibt. Dies kann zu Debugging-Zwecken nützlich sein, da dadurch detailliertere Informationen über die Variable bereitgestellt werden als mit print_r().

Im Gegensatz zu print_r() verfügt var_dump() nicht über eine Option, um die Ausgabe in eine Variable zurückzugeben. Daher können Sie es nicht direkt mit error_log() verwenden.

Sie können jedoch etwas verwenden, das als Ausgabepufferung bezeichnet wird, um die Ausgabe von var_dump() abzufangen und anschließend in die Datei debug.log zu schreiben.

$some_array = array( 'apple', 'banana', 'cherry' );
ob_start();
var_dump( $some_array );
$output = ob_get_clean();
error_log( $output );

Entwickler verwenden diese Art von Code häufig in einer speziellen Protokollierungsfunktion, um sowohl var_dump als auch error_log gemeinsam verwenden zu können.

function log_var_dump( $variable ) {
    ob_start();
    var_dump( $variable );
    $output = ob_get_clean();
    error_log( $output );
}

Weiterführende Informationen

Weitere Informationen zu den in dieser Lektion erwähnten Funktionen finden Sie auf den folgenden Seiten der PHP-Dokumentation:

PHP-Funktion var_dump()

PHP-Funktion error_log()

PHP-Funktion print_r()