From f04be33942ac72a8fbc14a53c3d6ce5bc6e72a32 Mon Sep 17 00:00:00 2001 From: John Koster Date: Sat, 21 Jun 2025 21:45:43 -0500 Subject: [PATCH] Corrects issue serializing/deserializing variable --- src/Data/HasOrigin.php | 2 +- src/Entries/Entry.php | 2 +- tests/Data/Entries/EntryTest.php | 27 +++++++++++++++++++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/Data/HasOrigin.php b/src/Data/HasOrigin.php index 2963b0dd2c4..f236193a466 100644 --- a/src/Data/HasOrigin.php +++ b/src/Data/HasOrigin.php @@ -7,7 +7,7 @@ trait HasOrigin { - private $resolvingValues = false; + protected $resolvingValues = false; /** * @var string diff --git a/src/Entries/Entry.php b/src/Entries/Entry.php index f44c9e927ae..730cce2b622 100644 --- a/src/Entries/Entry.php +++ b/src/Entries/Entry.php @@ -1109,6 +1109,6 @@ public function __sleep() $this->slug = $slug($this); } - return array_keys(Arr::except(get_object_vars($this), ['cachedKeys', 'computedCallbackCache', 'siteCache', 'augmentationReferenceKey'])); + return array_keys(Arr::except(get_object_vars($this), ['cachedKeys', 'computedCallbackCache', 'siteCache', 'augmentationReferenceKey', 'resolvingValues'])); } } diff --git a/tests/Data/Entries/EntryTest.php b/tests/Data/Entries/EntryTest.php index 8ad60e33593..8ebe9cfb41d 100644 --- a/tests/Data/Entries/EntryTest.php +++ b/tests/Data/Entries/EntryTest.php @@ -2698,4 +2698,31 @@ public function it_detects_recursive_augmentation() $entry->values(); } + + #[Test] + public function entries_can_be_serialized_after_resolving_values() + { + $entry = EntryFactory::id('entry-id') + ->collection('test') + ->slug('entry-slug') + ->create(); + + $customEntry = CustomEntry::fromEntry($entry); + + $serialized = serialize($customEntry); + $unserialized = unserialize($serialized); + + $this->assertSame('entry-slug', $unserialized->slug); + } +} + +class CustomEntry extends Entry +{ + public static function fromEntry(Entry $entry) + { + return (new static) + ->slug($entry->slug) + ->collection($entry->collection) + ->data($entry->data); + } }