phpbar.de logo

Mailinglisten-Archive

[php] require: Umstellung von PHP3 auf PHP4 bringt Probleme

[php] require: Umstellung von PHP3 auf PHP4 bringt Probleme

Markus Dobel dobel_(at)_femu.rwth-aachen.de
Fri, 07 Jul 2000 14:02:49 +0200


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