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.