Debuggen mit Zeilenausgabe
Oft erfolgt im Stadium des Entwickelns eine Kontrollausgabe von Variablen-Inhalten mit echo und der entsprechenden Variablen. Dass dies nicht unbedingt der beste Stil ist, bleibt hier dahingestellt.
Als kleine Debugging-Hilfe hier eine Funktion, die zusätzlich die Zeilennummer und den Dateinamen ausgibt. Dies geschieht über __LINE__
und __FILE__
Der Aufruf der Funktion geschieht über den Funktionsnamen decho
(hier d für debug und echo = decho - als Übergabe wird der Variablenname erwartet, nicht die Variable. Daher im Beispiel für die Variable $name dann decho ("name", __LINE__, __FILE__ );
. Es kann genauso der Inhalt von Arrays ausgegeben werden.
$name = "www.php-kurs.com";
decho ("name", __LINE__, __FILE__ );
function decho ( $variable, $zeilennummer = "", $dateiname = "" )
{
global $$variable;
echo '<blockquote style="border:1px dotted red;
border-left:10px solid red; padding-left:1em;">';
echo "Kontrollausgabe: ";
echo "<pre>";
if ( $$variable != "" )
{
echo '$'. $variable .' = ';
print_r ( $$variable );
}
else
{
print_r ( $variable );
}
echo "</pre>";
if ( $zeilennummer OR $dateiname )
{
echo "<br> (Zeile: $zeilennummer - $dateiname)";
}
echo "</blockquote>";
}
Zur Erklärung: Der Aufruf erfolgt über decho ("name", __LINE__, __FILE__ );
- dabei wird nicht die Variable übergeben, sondern nur der Name der Variable und innerhalb der Funktion über global $$variable
verfügbar gemacht. Das doppelte $-Zeichen ist korrekt :)
Wird der Funktion nicht der Variablenname übergeben, sondern die Variable, wird auch der Inhalt ausgegeben, allerdings ohne Namen der Variable.
Eleganter ist es, diese Funktion auszulagern und per include_once
dann einzubinden.
Wenn Sie einen Fehler finden, bitte mitteilen (egal ob Schreibfehler oder inhaltlicher Fehler).
Mit Maus fehlerhafte Stelle markieren und übernehmen mit folgendem Button: