Waltraut: Werte in php anzeigen

Hallo,
ich soll ein Programm übernehmen, das noch nicht ausgetestet ist.
Verdächtig ist eine Variable, die allerdings häufig geändert wird. Natürlich könnte ich an all diese Stellen den Wert ausgeben.
Aber gibt es eine Debug-Möglichkeit der Art "Zeige mir Ort/Wert der Variablen $xxx an, wo eine Zuordnung an sie passiert"?
Gruß

Waltraut

  1. Xdebug – die nächste Stufe des Debuggens

    Wenn du noch nie von Xdebug gehört hast und/oder es noch nie verwendet hast: verwende es direkt, nachdem du diesen Blogbeitrag gelesen hast! Für mich ist es das beste Tool, um komplexe Probleme zu debuggen. Xdebug ist eine PHP-Erweiterung, die installiert und aktiviert werden muss. Du benötigst auch eine IDE wie PhpStorm oder VS Code, um es zu verwenden, aber dann kann es dir wirklich helfen, diese schwer zu debuggenden Probleme zu finden.

    https://kau-boys.de/4795/webentwicklung/verschiedene-methoden-zum-debuggen-von-php-code

    1. Danke für die Info,

      https://kau-boys.de/4795/webentwicklung/verschiedene-methoden-zum-debuggen-von-php-code

      Leider erfüllt dies nicht meine Anforderungen. Ich kenne von anderen Systemen einen trace, der macht was ich will, z.B. Zeige einen oder alle aktuellen Variablenwerte, wenn der Wert in Feldx geändert wird.

  2. Hallo Waltraut,

    läuft PHP auf einem Server, wo Du Root-Rechte hast bzw. auf deinem eigenen PC?

    Es gibt die PHP-Extension XDebug, die sowas kann.

    https://xdebug.org/docs/trace

    Ob man das auf einzelne Variablen filtern kann, weiß ich allerdings nicht. Ich habe XDebug noch nie verwendet.

    Ggf. hat deine IDE auch solche Funktionen - wenn Du denn eine IDE und nicht Notepad++ oder Nano oder so verwendest.

    Wenn der Code auf einem WWW läuft (Wald+Wiesen Webserver) und Du dort die Zuweisungen live überwachen willst, sieht es hingegen schlecht aus. Eine eingebaute PHP-Funktionalität, mit der Du eine bestimmte Variable überwachen kannst, kenne ich nicht, da musst Du dann schon den Code ändern.

    Tante Google kommt auch immer nur wieder mit XDebug an.

    Beachte auch, dass eine Variable dadurch geändert werden kann, dass Du sie als Referenz woandershin übergibst. Das merkst Du beim Aufruf nicht. Früher musste man das & beim Aufruf mit angeben, da war's dann klar, dass eine Referenz übergeben wurde, in neueren PHP Versionen ist das verboten.

    $vari = 1;
    
    innocentFunction($vari);
    echo $vari;   // 42 - hä?
    
    
    function innocentFunction( &$wert ) {
       $wert = 42;
    }
    

    Speichern einer Referenz ist genauso böse:

    $vari = 1;
    $schnucki = &$vari;
    
    $schnucki = 99;
    echo $vari;   // 99
    

    Früher schoss man sich mit Zeigern in den Fuß, heute mit Referenzen…

    Rolf

    --
    sumpsi - posui - obstruxi