While testing the migration of our site to PHP 8 we noticed the BC break in 
internal functions like round() for parameter type errors:
round("foo") used to (silently, without warning) cast to float and return 0 
where as now it throws a TypeError: round():
        https://3v4l.org/pU0LD

The RFC at 
https://wiki.php.net/rfc/consistent_type_errors#backward_incompatible_changes 
<https://wiki.php.net/rfc/consistent_type_errors> states
> Backward Incompatible Changes
> 
> A TypeError will be thrown instead of a warning if incorrectly typed 
> parameters are passed to a function, which is a backwards incompatible change.

But that is not the whole truth because it suggests that there was a warning in 
7.4 which is not the case for functions like round() and possibly many more.

This makes the BC break much more impactful as there is no easy way to know if 
old code will suddenly abort with an exception whereas it used to run without 
any warning.

Is there any way of knowing what functions are affected by this?

This might be a blocker for people to migrate to PHP 8, should there be a way 
to have a warning-instead-of-exception stage added to PHP 8 even though there 
first versions were already released to help people migrate?

Or did I miss something?

- Chris

Reply via email to