comparison vendor/symfony/http-kernel/DataCollector/DataCollector.php @ 0:c75dbcec494b

Initial commit from drush-created site
author Chris Cannam
date Thu, 05 Jul 2018 14:24:15 +0000
parents
children a9cd425dd02b
comparison
equal deleted inserted replaced
-1:000000000000 0:c75dbcec494b
1 <?php
2
3 /*
4 * This file is part of the Symfony package.
5 *
6 * (c) Fabien Potencier <fabien@symfony.com>
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11
12 namespace Symfony\Component\HttpKernel\DataCollector;
13
14 use Symfony\Component\HttpKernel\DataCollector\Util\ValueExporter;
15 use Symfony\Component\VarDumper\Caster\CutStub;
16 use Symfony\Component\VarDumper\Cloner\ClonerInterface;
17 use Symfony\Component\VarDumper\Cloner\Data;
18 use Symfony\Component\VarDumper\Cloner\Stub;
19 use Symfony\Component\VarDumper\Cloner\VarCloner;
20
21 /**
22 * DataCollector.
23 *
24 * Children of this class must store the collected data in the data property.
25 *
26 * @author Fabien Potencier <fabien@symfony.com>
27 * @author Bernhard Schussek <bschussek@symfony.com>
28 */
29 abstract class DataCollector implements DataCollectorInterface, \Serializable
30 {
31 protected $data = array();
32
33 /**
34 * @var ValueExporter
35 */
36 private $valueExporter;
37
38 /**
39 * @var ClonerInterface
40 */
41 private $cloner;
42
43 public function serialize()
44 {
45 return serialize($this->data);
46 }
47
48 public function unserialize($data)
49 {
50 $this->data = unserialize($data);
51 }
52
53 /**
54 * Converts the variable into a serializable Data instance.
55 *
56 * This array can be displayed in the template using
57 * the VarDumper component.
58 *
59 * @param mixed $var
60 *
61 * @return Data
62 */
63 protected function cloneVar($var)
64 {
65 if ($var instanceof Data) {
66 return $var;
67 }
68 if (null === $this->cloner) {
69 if (class_exists(CutStub::class)) {
70 $this->cloner = new VarCloner();
71 $this->cloner->setMaxItems(-1);
72 $this->cloner->addCasters($this->getCasters());
73 } else {
74 @trigger_error(sprintf('Using the %s() method without the VarDumper component is deprecated since Symfony 3.2 and won\'t be supported in 4.0. Install symfony/var-dumper version 3.2 or above.', __METHOD__), E_USER_DEPRECATED);
75 $this->cloner = false;
76 }
77 }
78 if (false === $this->cloner) {
79 if (null === $this->valueExporter) {
80 $this->valueExporter = new ValueExporter();
81 }
82
83 return $this->valueExporter->exportValue($var);
84 }
85
86 return $this->cloner->cloneVar($var);
87 }
88
89 /**
90 * Converts a PHP variable to a string.
91 *
92 * @param mixed $var A PHP variable
93 *
94 * @return string The string representation of the variable
95 *
96 * @deprecated since version 3.2, to be removed in 4.0. Use cloneVar() instead.
97 */
98 protected function varToString($var)
99 {
100 @trigger_error(sprintf('The %s() method is deprecated since Symfony 3.2 and will be removed in 4.0. Use cloneVar() instead.', __METHOD__), E_USER_DEPRECATED);
101
102 if (null === $this->valueExporter) {
103 $this->valueExporter = new ValueExporter();
104 }
105
106 return $this->valueExporter->exportValue($var);
107 }
108
109 /**
110 * @return callable[] The casters to add to the cloner
111 */
112 protected function getCasters()
113 {
114 return array(
115 '*' => function ($v, array $a, Stub $s, $isNested) {
116 if (!$v instanceof Stub) {
117 foreach ($a as $k => $v) {
118 if (is_object($v) && !$v instanceof \DateTimeInterface && !$v instanceof Stub) {
119 $a[$k] = new CutStub($v);
120 }
121 }
122 }
123
124 return $a;
125 },
126 );
127 }
128 }