diff --git a/src/Symfony/Component/VarExporter/Internal/Exporter.php b/src/Symfony/Component/VarExporter/Internal/Exporter.php index b5ee88c0ff091..51c29e45f1998 100644 --- a/src/Symfony/Component/VarExporter/Internal/Exporter.php +++ b/src/Symfony/Component/VarExporter/Internal/Exporter.php @@ -157,11 +157,11 @@ public static function prepare($values, $objectsPool, &$refsPool, &$objectsCount $n = substr($n, 1 + $i); } if (null !== $sleep) { - if (!isset($sleep[$n]) || ($i && $c !== $class)) { + if (!isset($sleep[$name]) && (!isset($sleep[$n]) || ($i && $c !== $class))) { unset($arrayValue[$name]); continue; } - $sleep[$n] = false; + unset($sleep[$name], $sleep[$n]); } if (!\array_key_exists($name, $proto) || $proto[$name] !== $v || "\x00Error\x00trace" === $name || "\x00Exception\x00trace" === $name) { $properties[$c][$n] = $v; @@ -169,9 +169,7 @@ public static function prepare($values, $objectsPool, &$refsPool, &$objectsCount } if ($sleep) { foreach ($sleep as $n => $v) { - if (false !== $v) { - trigger_error(sprintf('serialize(): "%s" returned as member variable from __sleep() but does not exist', $n), \E_USER_NOTICE); - } + trigger_error(sprintf('serialize(): "%s" returned as member variable from __sleep() but does not exist', $n), \E_USER_NOTICE); } } if (method_exists($class, '__unserialize')) { diff --git a/src/Symfony/Component/VarExporter/Tests/Fixtures/var-on-sleep.php b/src/Symfony/Component/VarExporter/Tests/Fixtures/var-on-sleep.php index 9fd44bd59092d..a0d7e3f8cb21e 100644 --- a/src/Symfony/Component/VarExporter/Tests/Fixtures/var-on-sleep.php +++ b/src/Symfony/Component/VarExporter/Tests/Fixtures/var-on-sleep.php @@ -11,6 +11,14 @@ 'night', ], ], + 'Symfony\\Component\\VarExporter\\Tests\\GoodNight' => [ + 'foo' => [ + 'afternoon', + ], + 'bar' => [ + 'morning', + ], + ], ], $o[0], [] diff --git a/src/Symfony/Component/VarExporter/Tests/VarExporterTest.php b/src/Symfony/Component/VarExporter/Tests/VarExporterTest.php index 8e67d02d76b1e..7d99328966af5 100644 --- a/src/Symfony/Component/VarExporter/Tests/VarExporterTest.php +++ b/src/Symfony/Component/VarExporter/Tests/VarExporterTest.php @@ -349,17 +349,21 @@ public function setFlags($flags): void class GoodNight { public $good; + protected $foo; + private $bar; public function __construct() { unset($this->good); + $this->foo = 'afternoon'; + $this->bar = 'morning'; } public function __sleep(): array { $this->good = 'night'; - return ['good']; + return ['good', 'foo', "\0*\0foo", "\0".__CLASS__."\0bar"]; } } diff --git a/src/Symfony/Component/VarExporter/VarExporter.php b/src/Symfony/Component/VarExporter/VarExporter.php index 85813378137df..59d5e8631da1a 100644 --- a/src/Symfony/Component/VarExporter/VarExporter.php +++ b/src/Symfony/Component/VarExporter/VarExporter.php @@ -83,7 +83,7 @@ public static function export($value, bool &$isStaticValue = null, array &$found ksort($states); $wakeups = [null]; - foreach ($states as $k => $v) { + foreach ($states as $v) { if (\is_array($v)) { $wakeups[-$v[0]] = $v[1]; } else { pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy