On Wed, Aug 13, 2025 at 11:03 AM Nicolas Grekas < nicolas.grekas+...@gmail.com> wrote:
> > > Le ven. 8 août 2025 à 22:10, Gina P. Banyard <intern...@gpb.moe> a écrit : > >> On Friday, 25 July 2025 at 13:56, Gina P. Banyard <intern...@gpb.moe> >> wrote: >> >> > Hello internals, >> > >> > As Tim announced a few days ago, I've opened the votes for the >> deprecations: >> > https://wiki.php.net/rfc/deprecations_php_8_5 >> > >> > Please remember that the wiki is only capable to handle a single vote >> at a time, >> > so please submit each vote you intend on casting individually. >> > >> >> Hello internals, >> >> After two weeks of voting, I closed the votes of the "Deprecations for >> PHP 8.5" RFC at 19:45 UTC. >> >> The following proposals have been accepted: >> >> - Deprecate semicolon after case in switch statement (22 yay, 10 nay, >> 68.8%) >> - Deprecate non-standard cast names (32 yay, 0 nay, 100%) >> - Deprecate backticks as an alias for shell_exec (21 yay, 8 nay, 72.4%) >> - Deprecate the __sleep() and __wakeup() magic methods (18 yay, 9 nay, >> 66.7%) >> - Deprecate using values null as an array offset and when calling >> array_key_exists() (25 yay, 3 nay, 89.3%) >> - Deprecate __debugInfo() returning null (22 yay, 5 nay, 81.5%) >> - Deprecate constant redeclaration (31 yay, 0 nay, 100%) >> - Deprecate closure binding issues (29 yay, 0 nay, 100%) >> - Enact follow-up phase of the "Path to Saner Increment/Decrement >> operators" RFC (23 yay, 4 nay, 85.2%) >> - Deprecate the report_memleaks INI directive (23 yay, 2 nay, 92.0%) >> - Deprecate the register_argc_argv INI directive (27 yay, 0 nay, 100%) >> - Remove disable_classes INI setting (26 yay, 0 nay, 100%) >> - Deprecate Reflection*::setAccessible() (24 yay, 0 nay, 100%) >> - Deprecate ReflectionClass::getConstant() for missing constants (25 yay, >> 0 nay, 100%) >> - Deprecate ReflectionProperty::getDefaultValue() for properties without >> default values (21 yay, 2 nay, 89.5%) >> - Deprecate ArrayObject and ArrayIterator with objects (26 yay, 0 nay, >> 100%) >> - Deprecate SplObjectStorage::contains(), SplObjectStorage::attach(), and >> SplObjectStorage::detach() (17 yay, 2 nay, 89.5%) >> - Deprecate passing spl_autoload_call() to spl_autoload_unregister() (23 >> yay, 0 nay, 100%) >> - Deprecate the $exclude_disabled parameter of get_defined_functions() >> (23 yay, 0 nay, 100%) >> - Deprecate passing null to readdir(), rewinddir(), and closedir() (24 >> yay, 3 nay, 88.9%) >> - Deprecate passing string which are not one byte long to ord() (20 yay, >> 4 nay, 83.3%) >> - Deprecate passing integers outside the interval [0, 255] to chr() (21 >> yay, 1 nay, 95.5%) >> - Formally deprecate socket_set_timeout (22 yay, 0 nay, 100%) >> - Deprecate the $http_response_header predefined variable (22 yay, 2 nay, >> 91.7%) >> - [ODBC] Remove flags for building against specific drivers directly (16 >> yay, 0 nay, 100%) >> - Remove support for older ODBC versions (15 yay, 0 nay, 100%) >> - Deprecate PDO's 'uri:' scheme (22 yay, 0 nay, 100%) >> - Deprecate driver specific PDO constants and methods (17 yay, 6 nay, >> 73.9%) >> - Deprecate Pdo\Pgsql constants related to statement transaction state >> (17 yay, 0 nay, 100%) >> - Deprecate finfo_close() (24 yay, 2 nay, 92.3%) >> - Deprecate xml_parser_free() (22 yay, 2 nay, 91.7%) >> - Deprecate curl_close() (23 yay, 3 nay, 88.5%) >> - Deprecate curl_share_close() (23 yay, 3 nay, 88.5%) >> - Deprecate imagedestroy() (23 yay, 2 nay, 92.0%) >> - Deprecate key_length parameter of openssl_pkey_derive() (24 yay, 0 nay, >> 100%) >> - Deprecate intl.error_level INI setting (22 yay, 0 nay, 100%) >> - Formally deprecate mysqli_execute() (22 yay, 0 nay, 100%) >> - Deprecate building ext/ldap against Oracle LDAP (19 yay, 0 nay, 100%) >> - Deprecate the $context parameter for finfo_buffer() (24 yay, 0 nay, >> 100%) >> - Deprecate DATE_RFC7231 and DateTimeInterface::RFC7231 (22 yay, 0 nay, >> 100%) >> >> And the following proposals have been rejected: >> >> - Deprecate attributes applying to multiple class properties/constants (5 >> yay, 19 nay, 20.8%) >> - Deprecate ReflectionParameter::allowsNull() (9 yay, 10 nay, 47.4%) >> - Deprecate non-canonical type names for settype() (8 yay, 10 nay, 44.4%) >> - Deprecate FILTER_DEFAULT constant (12 yay, 10 nay, 54.5%) >> - Make $filter parameter mandatory for filter_*() functions (9 yay, 10 >> nay, 47.4%) >> - Deprecate PDO::ERRMODE_WARNING error mode (8 yay, 12 nay, 40.0%) >> >> Thank you to everyone that has voted and participated in the discussions. >> >> Best regards, >> >> Gina P. Banyard >> > > I’d like to raise some concerns about the decision to deprecate __sleep() > and __wakeup(). > > While I understand the intention behind moving toward __serialize() and > __unserialize(), in practice the migration path is often non-trivial. For > example, in Symfony’s codebase there are numerous cases where switching > requires deep knowledge of PHP’s serialization format to maintain > compatibility with existing payloads. This is essential so that updated > applications can still communicate with older versions. > > For many projects, this will be a significant burden, especially given > that __sleep() and __wakeup() have historically worked well for these use > cases. I’m concerned that the practical cost to the community may outweigh > the benefits, particularly since the rationale for removal seems, at least > from a user’s perspective, debatable. > > Fully agree and this is exactly what I noted in https://github.com/php/php-src/pull/19435 . I think this RFC was very poor in showing the effort that is needed for migration as it was represented like a trivial thing. Kind regards Jakub