- Ohne
declare(strict_types=1);
gehtints(1, '2', 3)
ohne Fehler durch. Ob das richtig ist oder nicht, weiß der Jongleur... (der vom PHP Type Juggling). Mit dem declare wirft es den Type Error.
Mit declare(strict_types=1);
sagst du dem PHP-Laufzeitsystem, dass du Type-Coercing unterbinden möchtest.
- Es ist definitiv ein Laufzeitcheck, und nicht statisch, wie von Dir unterstellt.
Nein, hier bist du dem selben Missverständnis wie pl aufgelaufen. Du hast das Programm durch den PHP-Interpreter gejagt ohne vorher einen statischen Typchecker zu fragen. Anders als Java oder C++ hat PHP keinen eingebauten statischen Typchecker. Falls du also von Typchecks zur Entwicklungszeit profitieren willst, musst du das mit einem externen statischen Typchecker komplementieren.