dedlfix: neue Datei erstellen

Beitrag lesen

Tach!

Sinnlose typsichere Vergleiche bremsen (mich) beim Code-Lesen, weil dann die Frage aufkommt, warum hier typsicher vergleichen werden muss, welche zweideutigen Werte erwartet der Autor denn hier?

if ($variable === 'foo')

Nur ein String mit dem Inhalt foo ist gleich dem Stringliteral 'foo'. Es gibt keinen anderen Wert eines anderen Typs, der diese Bedingung erfüllen kann. Es wäre hier also eine komplett sinnlose Verwendung eines typsicheren Vergleichs.

Oh, hier muss ich mich revidieren. Ein Blick auf die PHP type compaision tables zeigt mir einen Fehler auf. Sowohl true als auch 0 (aber nicht '0' als String) werden im einfachen Vergleich zu einem nichtleeren String als gleich angesehen. Die Typen Integer und Boolean sind hier anscheinend die dominanten Typen und zwingen bei einem Vergleich den String zu einer Typkonvertierung. Ein nicht numerischer String konvertiert nach Integer ergibt 0.

Das obige Beispiel ist also nur dann sinnlos, wenn $variable aus einer Quelle stammt, die nur Strings liefert, zum Beispiel ein Eintrag in $_POST oder $_GET.

dedlfix.