Re: Deprecated partially supported callables: should is_callable() throw a deprecation notice ?

From: Date: Mon, 02 May 2022 11:14:47 +0000
Subject: Re: Deprecated partially supported callables: should is_callable() throw a deprecation notice ?
References: 1 2  Groups: php.internals 
Request: Send a blank email to internals+get-117655@lists.php.net to get a copy of this message
On Wed, Mar 16, 2022 at 9:57 AM Christian Schneider <cschneid@cschneid.com> wrote: > > Am 16.03.2022 um 06:52 schrieb Juliette Reinders Folmer > <php-internals_nospam@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

« previous php.internals (#117655) next »