| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 | <?php/* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */namespace Symfony\Component\HttpKernel\DataCollector;use Symfony\Component\VarDumper\Caster\CutStub;use Symfony\Component\VarDumper\Caster\ReflectionCaster;use Symfony\Component\VarDumper\Cloner\ClonerInterface;use Symfony\Component\VarDumper\Cloner\Data;use Symfony\Component\VarDumper\Cloner\Stub;use Symfony\Component\VarDumper\Cloner\VarCloner;/** * DataCollector. * * Children of this class must store the collected data in the data property. * * @author Fabien Potencier <fabien@symfony.com> * @author Bernhard Schussek <bschussek@symfony.com> */abstract class DataCollector implements DataCollectorInterface{    /**     * @var array|Data     */    protected $data = [];    /**     * @var ClonerInterface     */    private $cloner;    /**     * Converts the variable into a serializable Data instance.     *     * This array can be displayed in the template using     * the VarDumper component.     *     * @param mixed $var     *     * @return Data     */    protected function cloneVar($var)    {        if ($var instanceof Data) {            return $var;        }        if (null === $this->cloner) {            $this->cloner = new VarCloner();            $this->cloner->setMaxItems(-1);            $this->cloner->addCasters($this->getCasters());        }        return $this->cloner->cloneVar($var);    }    /**     * @return callable[] The casters to add to the cloner     */    protected function getCasters()    {        $casters = [            '*' => function ($v, array $a, Stub $s, $isNested) {                if (!$v instanceof Stub) {                    foreach ($a as $k => $v) {                        if (\is_object($v) && !$v instanceof \DateTimeInterface && !$v instanceof Stub) {                            $a[$k] = new CutStub($v);                        }                    }                }                return $a;            },        ] + ReflectionCaster::UNSET_CLOSURE_FILE_INFO;        return $casters;    }    /**     * @return array     */    public function __sleep()    {        return ['data'];    }    public function __wakeup()    {    }    /**     * @internal to prevent implementing \Serializable     */    final protected function serialize()    {    }    /**     * @internal to prevent implementing \Serializable     */    final protected function unserialize($data)    {    }}
 |