Zwei Anmerkungen hätte ich.
-
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. -
Es ist definitiv ein Laufzeitcheck, und nicht statisch, wie von Dir unterstellt.
function ints (int ...$rest) : array {
return $rest;
}
var_export(ints(1,2,3));
if (1 > 2)
var_export(ints('foo')); // type error
wirft keinen Fehler. Sollte es bei statischem Check aber.
Rolf