[12.x] Fix serialization issue with PHP property hooks #57443
+201
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #57357
Fixes serialization errors when using PHP 8.4 property hooks in Eloquent models. When models with property hooks a serialized, Laravel throws:
serialize(): "property_name" returned as member variable from __sleep() but does not exist
.Property hooks create virtual properties without actual storage. The current
__sleep()
usesget_object_vars()
which includes these virtual properties, causing serialization to fail.Solution: Changed
get_object_vars($this)
toget_mangled_object_vars($this)
inModel::__sleep()
. This only returns properties with actual storage, excluding virtual property hooks.Tests: Added comprehensive coverage in
EloquentModelPropertyHooksTest.php
for getter hooks, setter hooks, multiple hooks, mixed properties, and queue scenarios.