Zitat von Neither
Ich verstehe deine Formulierungen aber teilweise auch so, dass du derartige Prüfungen für ein „unzulässiges“ Übernehmen von Konzepten aus anderen Sprachen hältst. Das sehe ich (nicht zuletzt aus pragmatischen Gründen) anders, auch wenn PHP die Sprache ist, die sie ist.
Will ich vom Prinzip gar nicht widersprechen. Das Problem geht aber jetzt erst los: Du machst eine Typprüfung auf den gesamten positiven Zahlbenbereich von int. Dein System - ich konstruriere jetzt einfach weiter - darf aber nur int > 0 und int < 9.999 verwenden. Du musst - natürlich - eine Logik entwerfen. Das Typsystem lässt Dich hier schon im Stich.
Ergebnis: Overhead ohne einen Gewinn an Sicherheit.
Ergebnis: Overhead ohne einen Gewinn an Sicherheit.
Nein, das ist eben PHP. Kenne die Regeln, lerne damit zu leben - lerne es zu lieben und vor allem zu Deinem Vorteil zu nutzen. Bau aber nicht Sprachkonstrukte aus anderen Sprachen nach.
Es wird grundsätzlich so oder so eine Strategie benötigt, mit Werten umzugehen, die im falschen Datentypen übergeben werden. PHP versucht zwar im Zweifel auch von allein, sich das alles passend zurechtzudingsen, aber da passiert genau das, was durch strikte Typprüfungen vermieden werden kann: Jede Funktion macht im Grunde irgendwas. Das ist komplett chaotisch.
...also verlagerst Du doch nur eine in jedem Fall (über die Typumwandlung hinaus) notwendige Logik in vielleicht 10 oder 20 aufrufende Stellen. Das ist wenig effektiv und noch weniger sinnvoll.
Möglicherweise reden wir da aneinander vorbei. Ein is_int ersetzt natürlich keinen Range-Check oder dergleichen.
Kommentar