Rolf B: Frage zu einem PHP script

Beitrag lesen

Hallo einsiedler,

Das mit den debugging verstehe ich nicht!

Tjaaa. Willst Du denn, das das so bleibt? Oder möchtest Du es nicht lieber lernen?

Debuggen muss jeder können, der programmieren will. Du kannst ja nicht mit jedem Fehler in ein Forum oder zu einem Kumpel laufen und sagen: tut nicht, schreib mal für mich fertig...

Debuggen kannst Du lernen. Du hast deinen Programmcode geschrieben. Dabei hast Du Dir etwas gedacht. Du hast dir überlegt: Wenn ich dies tue, bekomme ich jene Daten heraus. Und damit kann ich SO weiterarbeiten.

Ob diese Gedanken richtig waren, musst Du überprüfen. Schritt für Schritt. Du musst die Daten, die Du durch deine Aktionen bekommen hast, ausgeben und schauen, ob es das ist, was Du glaubst, dass es sein soll. Du musst an Hand deiner Kontrollausgaben schauen, ob dein Programm daher läuft, woher Du geplant hast, dass es läuft.

Kontrollausgaben kann man mit Echo machen. Das blöde daran ist, dass sie dann kreuz und quer ins HTML gerotzt werden und einem die Ausgabe kaputt machen. Ich verwende da ganz gern ein Array, wo ich meine Kontrollinformationen einfach Eintrag für Eintrag anhänge, und dieses Array gebe ich dann am Ende vor dem </body> Tag aus.

Ohne Kontrollausgaben ist Debuggen schwierig. Eine Testmethodik der 60er Jahre ist der Schreibtischtest: Ein großer Zettel, eine Zeile für jede Variable, und dann führt man das Programm "von Hand" aus. Setzt natürlich immer noch voraus, dass man genau weiß, was jeder Befehl tut. Ich befürchte ja, dass Du das nicht weißt.

Die Schreibtischtestvariante, die VHIG-Entwickler[1] wie ich einsetzen, ist, den Code im Kopf auszuführen und sich zu merken, was in den Variablen landet. Das klappt, solange der Code unter einer bestimmten Komplexität bleibt.

Die Hirntest-Methode, die ich angewendet habe, sagt mir, dass Du Dir unklar bist, was in $img drinsteht. Zuerst behandelst Du es wie den Key im $aImages Array, dann wie den Value. Deswegen funktioniert dein Code nicht. Du hast $aImages so konstruiert, dass der Dateiname der Index im Array ist und die übrigen Informationen (path und size) den Wert bilden. Mit array_map kommst Du nicht gleichzeitig an Index und Wert heran. Deswegen mein Hinweis auf foreach. Die Schreibverwechslung title/titel gibt's auch noch, aber das ist harmlos.

Rolf

PS: Debuggen kannst Du nur unter einer einzigen Voraussetzung nicht lernen: Wenn Du Code nicht selbst schreibst, sondern frei von Verständnis zusammenkopierst. Ist das so? Suchst Du nur eine weitere Kopiervorlage? Das solltest Du dann klar ansagen. Andernfalls werden wir weiter versuchen, Hilfe zur Selbsthilfe zu leisten (bei manchen habe ich das aufgegeben - soll ich das bei Dir auch tun?)

--
sumpsi - posui - clusi

  1. Vom Hirn ins Gerät (sprich: ohne Planung, ohne separaten Designschritt) ↩︎