Tach!
Das ist unter Umständen noch schlechter, weil ich mich dann an solchen Stellen aufhalte und frage, warum denn nun der Typ wichtig ist und nicht auch 0, array() oder Leerstrings die Bedingung erfüllen. Der typsichere Vergleich hat seinen Sinn bei strlen(), wo es einen Unterschied zwischen false und 0 gibt. Aber das nun aus Prinzip an jeder Stelle anzuwenden ist wenig sinnvoll.
Du schlössest damit schlicht die Möglichkeit aus, dass der Vergleich wahr ist, obwohl du das nicht wolltest oder erwartet hättest.
Ist denn der Anwendungsfall gegeben, dass nur ein boolescher Wert übergeben werden darf? Es geht mir um die Fälle, bei denen nicht direkt zu sehen ist (sei es durch Kommentar oder dokumentiertes Funktionsergebnis), dass zum Beispiel false aber nicht 0 erwartet wird.
Wieso macht es Sinn, alle u.g. Möglichkeiten mit einzuschließen, um die es eigentlich garnicht geht. Eine prinzipielle Fehlerquelle die unnötig ist.
Diese Frage lässt sich nur für den jeweiligen Anwendungsfall klären und nicht pauschal.
dedlfix.