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.

I don’t know if there is room to reconsider the deprecation, but I wanted
to share this perspective from the field.

Cheers,
Nicolas

Reply via email to