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.