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