tami: Rückgabewert von Methoden - typsicherer Vergleich

Beitrag lesen

hi dedlfix,

Tach!

if(($row = $STH->fetch()) !== false) {
Deswegen ist der typsichere Vergleich auch nicht notwendig.
Er hinterlässt aber keinen Zweifel. Das ist gut.

Bei mir hinterlässt er aber einen, weil ich erstmal nachschauen muss, ob nicht in dieser unzweifelhaft eindeutigen Situation die Logik umgedreht wird.

Das kapier mal einer.

Uneindeutig und unvollständig erscheint mir das hier: http://us3.php.net/manual/en/types.comparisons.php.

Ebenso: "Return Values: The return value of this function on success depends on the fetch type."

Ganz eindeutig aber ist:  "In all cases, FALSE is returned on failure."

http://php.net/manual/en/pdostatement.fetch.php

Insofern ist logisch allein eindeutig richtig: $STH->fetch() !== false. Denn false ist der Rückgabewert bei einem Fehler. Und nicht "irgendwas was zurück kommt, sich aber nicht zu false casten lässt, zeigt an, dass kein boolsches False zurück kam". Sonst stünde da ja: "The return value depends on the fetch type, but you can be sure, that all that ist returned does not cast to Boolen-False, except on Failure, where exact Boole-False ist returned." Schon allein der krüppelige Versuch diese Logik in Worte zu fassen sollte doch schon zeigen, wir murx das ist. Muss irgendwas psychologisches sein, bei Dir und Sven, Crockford kommt in seinen Vorträgen auf dieses "ja, aber ..." ja immer wieder zu sprechen.

Hier soll doch faktensicheres Wissen und nicht "funzendes" vermittelt werden. Habe mich auch schon über Svens Beharrlichkeit bezüglich typenloser Vergleiche gewundert. Es kann schlicht immer zu einer Fehlerquelle werden und bzw. weil es (um ein Gleichheitszeichen zu sparen!) Fälle mit einschließt, die man überhaupt nicht eigentlich berücksichtigen möchte. Ich bin mir nach 10 Minuten Lektüre des Manuals immer noch nicht sicher, ob nicht doch ein leeres Array oder ein leeres Objekt wiedergegeben werden könnte. Und: ein leeres Objekt taucht in der typecasting-Tabelle garnicht auf. Oha ...;

mfg

tami