Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

RFC: Allow __sleep() to return null or no value to delegate to default serialization#20252

Draft
dkulyk wants to merge 5 commits into
php:masterphp/php-src:masterfrom
dkulyk:sleep_no_returndkulyk/php-src:sleep_no_returnCopy head branch name to clipboard
Draft

RFC: Allow __sleep() to return null or no value to delegate to default serialization#20252
dkulyk wants to merge 5 commits into
php:masterphp/php-src:masterfrom
dkulyk:sleep_no_returndkulyk/php-src:sleep_no_returnCopy head branch name to clipboard

Conversation

@dkulyk
Copy link
Copy Markdown

@dkulyk dkulyk commented Oct 21, 2025

RFC https://wiki.php.net/rfc/sleep_without_return_array

This PR implements the RFC: Allow __sleep() to return null or no value to delegate to default serialization.
It refines the behavior of the __sleep() magic method by making it a pre-serialization lifecycle hook rather than a serialization controller.

Key changes
• __sleep() may now return null or no value (void):
The engine will execute side effects and then perform default serialization as if __sleep() were not defined.
• Invalid return types:
Emit a warning and fall back to default serialization (previously serialized as NULL).
• Backward compatibility:
Low impact. Classes that relied on silent NULL serialization can explicitly use the proposed #[NoSerialize] attribute (see related RFC).
• Updated error message:
Clarified diagnostic text for invalid return types.

Motivation

This change limits __sleep() to a single responsibility — preparing an object for serialization —
while moving property filtering and serialization control to declarative attributes like #[NoSerialize] and #[NotSerializable] (under separate RFCs).

@dkulyk dkulyk requested a review from bukka as a code owner October 21, 2025 00:26
@dkulyk dkulyk marked this pull request as draft October 21, 2025 00:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

Morty Proxy This is a proxified and sanitized view of the page, visit original site.