diff options
Diffstat (limited to 'vendor/symfony/http-kernel/DataCollector/DataCollector.php')
| -rw-r--r-- | vendor/symfony/http-kernel/DataCollector/DataCollector.php | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/vendor/symfony/http-kernel/DataCollector/DataCollector.php b/vendor/symfony/http-kernel/DataCollector/DataCollector.php index a3d8c99d84..14ea230f57 100644 --- a/vendor/symfony/http-kernel/DataCollector/DataCollector.php +++ b/vendor/symfony/http-kernel/DataCollector/DataCollector.php @@ -27,21 +27,30 @@ use Symfony\Component\VarDumper\Cloner\VarCloner; */ abstract class DataCollector implements DataCollectorInterface, \Serializable { - protected $data = array(); + protected $data = []; /** * @var ClonerInterface */ private $cloner; + /** + * @internal + */ public function serialize() { - return serialize($this->data); + $trace = debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT, 2); + $isCalledFromOverridingMethod = isset($trace[1]['function'], $trace[1]['object']) && 'serialize' === $trace[1]['function'] && $this === $trace[1]['object']; + + return $isCalledFromOverridingMethod ? $this->data : serialize($this->data); } + /** + * @internal + */ public function unserialize($data) { - $this->data = unserialize($data); + $this->data = \is_array($data) ? $data : unserialize($data); } /** @@ -76,7 +85,7 @@ abstract class DataCollector implements DataCollectorInterface, \Serializable */ protected function getCasters() { - return array( + return [ '*' => function ($v, array $a, Stub $s, $isNested) { if (!$v instanceof Stub) { foreach ($a as $k => $v) { @@ -88,6 +97,6 @@ abstract class DataCollector implements DataCollectorInterface, \Serializable return $a; }, - ); + ]; } } |
