Symfony\Component\VarDumper\Caster\ExceptionCaster::castTraceStub PHP Method

castTraceStub() public static method

public static castTraceStub ( Symfony\Component\VarDumper\Caster\TraceStub $trace, array $a, Symfony\Component\VarDumper\Cloner\Stub $stub, $isNested )
$trace Symfony\Component\VarDumper\Caster\TraceStub
$a array
$stub Symfony\Component\VarDumper\Cloner\Stub
    public static function castTraceStub(TraceStub $trace, array $a, Stub $stub, $isNested)
    {
        if (!$isNested) {
            return $a;
        }
        $stub->class = '';
        $stub->handle = 0;
        $frames = $trace->value;
        $prefix = Caster::PREFIX_VIRTUAL;
        $a = array();
        $j = count($frames);
        if (0 > ($i = $trace->sliceOffset)) {
            $i = max(0, $j + $i);
        }
        if (!isset($trace->value[$i])) {
            return array();
        }
        $lastCall = isset($frames[$i]['function']) ? (isset($frames[$i]['class']) ? $frames[0]['class'] . $frames[$i]['type'] : '') . $frames[$i]['function'] . '()' : '';
        $frames[] = array('function' => '');
        for ($j += $trace->numberingOffset - $i++; isset($frames[$i]); ++$i, --$j) {
            $f = $frames[$i];
            $call = isset($f['function']) ? (isset($f['class']) ? $f['class'] . $f['type'] : '') . $f['function'] . '()' : '???';
            $label = substr_replace($prefix, "title=Stack level {$j}.", 2, 0) . $lastCall;
            $frame = new FrameStub(array('object' => isset($f['object']) ? $f['object'] : null, 'class' => isset($f['class']) ? $f['class'] : null, 'type' => isset($f['type']) ? $f['type'] : null, 'function' => isset($f['function']) ? $f['function'] : null) + $frames[$i - 1], false, true);
            $f = self::castFrameStub($frame, array(), $frame, true);
            if (isset($f[$prefix . 'src'])) {
                foreach ($f[$prefix . 'src']->value as $label => $frame) {
                    $label = substr_replace($label, "title=Stack level {$j}.&", 2, 0);
                }
                $f = $frames[$i - 1];
                if ($trace->keepArgs && !empty($f['args']) && $frame instanceof EnumStub) {
                    $frame->value['arguments'] = new ArgsStub($f['args'], isset($f['function']) ? $f['function'] : null, isset($f['class']) ? $f['class'] : null);
                }
            }
            $a[$label] = $frame;
            $lastCall = $call;
        }
        if (null !== $trace->sliceLength) {
            $a = array_slice($a, 0, $trace->sliceLength, true);
        }
        return $a;
    }