Вход Регистрация
Файл: vendor/symfony/http-kernel/DataCollector/DataCollector.php
Строк: 110
<?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 SymfonyComponentHttpKernelDataCollector;

use 
SymfonyComponentVarDumperCasterCutStub;
use 
SymfonyComponentVarDumperCasterReflectionCaster;
use 
SymfonyComponentVarDumperClonerData;
use 
SymfonyComponentVarDumperClonerStub;
use 
SymfonyComponentVarDumperClonerVarCloner;

/**
 * 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 = [];

    private 
$cloner;

    
/**
     * Converts the variable into a serializable Data instance.
     *
     * This array can be displayed in the template using
     * the VarDumper component.
     */
    
protected function cloneVar(mixed $var): Data
    
{
        if (
$var instanceof Data) {
            return 
$var;
        }
        if (!isset(
$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 $aStub $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;
    }

    public function 
__sleep(): array
    {
        return [
'data'];
    }

    public function 
__wakeup()
    {
    }

    
/**
     * @internal to prevent implementing Serializable
     */
    
final protected function serialize()
    {
    }

    
/**
     * @internal to prevent implementing Serializable
     */
    
final protected function unserialize(string $data)
    {
    }
}
Онлайн: 0
Реклама