Mailinglisten-Archive |
Peter Blancke wrote: > > On Fri, 7 Jul 2000, Egon Schmid wrote: > > > Lars Scholand wrote: > > > > > if ($test = "ok") { > > > > > Es sollte 'if ($test == "ok") {' heissen, oder was Ulf bevorzugt 'if > > ("ok" == $test) {' > > Gibt es eine Begruendung fuer diese Bevorzugung oder ist das einfach die > Freiheit und Unabhaengigkeit der Programmierer? Es gibt einen beliebten Fehler bei if-Konstrukten, und genau _dieser_ ist dem Lutz auch passiert: if ($a=1000) { do_foo(); } Nun steht dort eine Zuweisung als "Condition", die immer TRUE ergibt, solange der Wert in der Klammer nicht 0 ist. Ergo funktioniert das Script nicht wie gewuenscht und man sucht sich einen Wolf beim debuggen. Schreibt man stattdessen: if (1000=$a) { do_foo(); } wird das Script immernoch nicht funktionieren, aber PHP wird auch sofort eine Fehlermeldung rauswerfen, dass es der Linken Seite nichts zuweisen kann. Man findet den Fehler schneller bzw. sofort. Ob das in der Praxis wirklich viel weiterhilft ist fraglich, denn: - Wer immer daran denkt, dass er Vergleiche so herum schreiben soll, denkt in der Regel in dem Moment dann auch daran, dass Vergleiche mit einem == gemacht werden muessen. - Wenn ich eine Condition ($a==$b) benoetige, habe ich keine Konstante, die ich auf die linke Seite schreiben kann, und kann daher mit der Eselsbruecke nicht viel anfangen. Ich kenne das Problem leider nur _zu_ gut, da ich mich auch ziemlich viel mit Delphi beschaeftige, und dort werden eben Vergleiche mit = und Zuweisungen mit := gemacht. Ulfs Methode, solchen Fehlern entgegenzuwirken, hat mir in der Praxis jedoch leider nur selten etwas gebracht. Gruss, Markus
php::bar PHP Wiki - Listenarchive