Tach!
Wenn du einen Anwendungsfall hast, der das erfordert, dann ist das doch ok.
Es geht nicht um "ok", es geht um die Frage, ob es eine weniger fehleranfällige bzw. explizitere Schreibweise gibt.
Nein, nicht generell.
Für den Zweifelsfall ist es nicht sinnvoll, ihn durch einen anderen Zweifelsfall zu ersetzen (oder des Prinzips wegen weitere Zweifelsfälle einzubauen), sondern ihn mit einem Kommentar aufzuklären.
Naja, im Code darf der Zweifelsfall wohl auch aufgeklärt werden.
Das setzt voraus, dass === generell besser wäre als == und sämtliche Zweifelsfälle zweifelsfrei ausräumt. Das sehe ich aber nicht so.
Meines Wissens sind das diese Problemfälle, die die Empfehlung zu === rechtfertigen. Aber für PHP sind die Vergleichvarianten übersichtlich und dokumentiert. Ich sehe keinen Grund eine generelle ===-Empfehlung für PHP auszusprechen.
Tja, die Liste ist genau der Punkt. Wer die nicht zu 100% auswendig kann, kann bei einer eventuellen Fehlersuche straucheln.
Man darf auch nachschlagen. Und Programmieren ist keine Tätigkeit für Idioten, um das mal so zu sagen. Du wirst nicht ohne grundlegende Kenntnisse, allein mit Prinzipien programmieren können. Du brauchst das Wissen auch für die Fälle, bei denen du Code bekommst, der sich nicht an deine Prinzipien hält. Das Lernen/Wissen wird dir nicht erspart.
$x="0" ist bool-false. Und was mit befüllten Arrays und leeren Objekten ist, steht da garnicht.
Nicht-leere Arrays sind false, gefüllte sind true. Das steht auf der Seite zum Boolean-Typ. Man sollte nun 1 und 1 zusammenzählen können, dass ein nicht-leeres Array sich gegenteilig zu dem leeren verhält. Ebenfalls auf der Boolean-Typ-Seite steht, dass Objekte niemals false sind (PHP 4 ignorierend).
Ich behaupte mal provokant, den Fall, wo auch "==" in PHP eine gleichwertige Aussagekraft hat, gibt es nicht. Es ist schlicht "Faulheit" des Programmierers und schließt immer mehr ein, als man braucht. Und "Faulheit" wäre aus meiner Sicht übrigens Fehlerquelle Nr. 1.
Warum sollte man bei Konfigurationswerten "TRUE"/"FALSE" vorschreiben, wenn es 1/0 auch tut?
Warum sollte man bei mysql(i)_query() strikt auf FALSE prüfen, wenn das Ergebnis im Nicht-Fehlerfall auf keinen Fall zu false castet?
Der typsichere Vergleich bringt in den beiden Fällen und anderen keinen Vorteil. Er würde nur (mir) implizit sagen wollen, dass es ein zu false kompatibles Ergebnis oder einen solchen Wert geben kann, der keinesfalls mit false verwechselt werden darf.
PHP ist nun mal keine typsichere Sprache. Wer das nicht mag, sollte sie nicht mit Prinzipien zu einer solchen umzubiegen versuchen, nur um sich eine heile Welt zusammenzulügen.
dedlfix.