Sie sind hier : sebastian1012.bplaced.net/ homepage-neu / Themen-Blog1 / yoda-conditions.php

YODA Conditions

Yoda dreht bekanntlich gern Satzbestandteile um. Das hat jetzt noch nichts direkt mit PHP zu tun. Zäumen wir das Pferd mal andersherum auf. Was fällt hier auf?

function doSomething()
{
    return false;
}

$res = doSomething();

if ($res = false)
{
    echo "1";
}
else
{
    echo "2";
}

Der geübte Debugger sieht sofort: Im if haben wir eine Zuweisung und keinen Vergleich. PHP findet das voll okay, IDEs geben in der Regel einen Warnhinweis. Raus kommt im Übrigen 2.

Was wäre jetzt, wenn wir frei nach Yoda geschrieben hätten:

if (false = $res)
{
    echo "1";
}
else
{
    echo "2";
}

Parse error: syntax error, unexpected ‚=‘. Wunderbar! Man kann einer Konstanten (wie false) keinen Wert zuweisen, was wir hier auf Grund unseres Tippfehlers (nur ein =) versucht hätten. Ist letztendlich eine Gewöhungssache. Wenn man QM-Tools wie den PHP Code Sniffer verwendet, fliegt solch ein Fehler sowieso auf, zudem hat man ja durch TDD ohnehin keine Fehler im Code, gell ;).

Besonders umdenken muss ich bei einer Verknüpfung von mehreren Ausdrücken im if oder > und <. Beispiel?

if (4 <= $var && 10 >= $var) {}

vs.

if ($var >= 4 && $var <= 10) {}

Beide Vergleiche sind vollständig äquivalent, jedoch komme ich – gewohnheitsbedingt – mit dem zweiten wesentlich besser hin.

Bildquelle

yoda

Bildquelle