On Wed, Mar 16, 2022 at 9:57 AM Christian Schneider
<cschn...@cschneid.com> wrote:
>
> Am 16.03.2022 um 06:52 schrieb Juliette Reinders Folmer 
> <php-internals_nos...@adviesenzo.nl>:
> > I've just been looking in detail at the Partially Supported Callables 
> > deprecation RFC: 
> > https://wiki.php.net/rfc/deprecate_partially_supported_callables
> >
> > The RFC explicitly excludes the `is_callable()` function and the `callable` 
> > type from throwing deprecation notices.
> >
> > [...] I wonder if the decision [...] is the right one (though I understand 
> > the desire to keep [them] side-effect free).
> >
> > Consider these code samples:
> >
> >  function foo(callable $callback) {}
> >  foo('static::method');
> >
> > [...] in PHP 9.0 the function will start throwing a TypeError.
>
> [...] This is a major problem because code which was "just working" directly 
> goes to a TypeError without a migration phase warning about it. This is 
> something I've repeatedly advocated against.
>
> >  if (is_callable('static::method')) {
> >      static::method();
> >  }
> >
> > [...] in PHP 9.0, the behaviour of this code will be silently reversed for 
> > those callbacks which would previously result in `is_callable()` returning 
> > true, which makes this a potentially dangerous change without deprecation 
> > notice.
>
> I agree with you here: Code which silently changes behavior is also a 
> migration hassle.

Hi,

I too would rather have "extra" deprecation notices in 8.2 than
*sudden errors / silent behavior changes* in 9.0 (for the callable
type declaration / the is_callable() function)...

Regards,

-- 
Guilliam Xavier

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: https://www.php.net/unsub.php

Reply via email to