summaryrefslogtreecommitdiff
path: root/vendor/symfony/http-kernel/DataCollector/DataCollector.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/symfony/http-kernel/DataCollector/DataCollector.php')
-rw-r--r--vendor/symfony/http-kernel/DataCollector/DataCollector.php19
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;
},
- );
+ ];
}
}