PHP: Zuweisungen in IF-Statements

Gegeben sei folgender Quelltext:

if ( $a == 1 ) {
  ...
}

Sind wir mal ehrlich. Wie oft geschieht es, dass man statt wie im obigen Fall nur ein Gleichheitszeichen im Eifer des Gefechts der Tastatur entlocken kann? Ein Syntaxfehler ist das nicht, denn es ist absolut gültiger PHP-Code.

Aus dem Vergleich wird plötzlich eine ungewollte Zuweisung. Auf eine Warnung seitens des Interpreters braucht man auch nicht zu hoffen, da kein lesender sondern schreibender Zugriff erfolgt! Einzig und allein aktuelle IDE’s monieren eine unschöne Syntax, die gemieden werden sollte. Wer nun das kleine Ausrufezeichen in Eclipse und Co. aber übersieht, sucht ggfs. lange nach dem Fehler.

Auch wenn es nur ein kleiner Hebel ist, aber die Lösung des Problems ist denkbar einfach: Man schreibt den Vergleich einfach immer in der anderen Reihenfolge:

if ( 1 == $a ) {
  ...
}

Damit kann es auch den schnellsten Schreibern nicht mehr gelingen, lauffähigen Code bei der Eingabe von nur einem Gleichheitszeichen zu erzeugen. Denn einem konstanten Wert kann nichts mehr zugewiesen werden.

Fazit:

Allgemein sollte man zuweisungen innerhalb von IF-Blöcken vermeiden – es gehört nicht zum guten Ton in der Programmierung. Wer sich hier in seiner Schreibweise umgewöhnt, macht sich das Leben leichter und muss nach weniger Fehlern suchen.

2 Gedanken zu „PHP: Zuweisungen in IF-Statements

  1. Achja, die Yoda-Conditions. Richtig eingesetzt sicher sinnvoll, bei Sachen wie „if (4 <= $foo || 6 >= $foo) … finde ichs dann aber kaum noch lesbar – wenn man die Yodas konsequent einsetzt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *