The battle between strict type declarations vs coercive has been here for a
while. My problem with coercion in detriment of strictness is
that sometimes you DON'T WANT TYPE CASTING AT ALL. This new feature would
create serious impediments. So I wonder if we couldn't have both (strict
and coercive types declarations) and leave the current proposed type
hinting syntax reserved for strict type declarations? Like in:
function(int $a, (int) $b) {
// $a will be strict
// $b will be type casted
}
This way we can actually choose when to cast and when to be strict and both
features could be voted independently without affect each other possible
future adoptions.