Chris@0: Chris@0: * Chris@0: * For the full copyright and license information, please view the LICENSE Chris@0: * file that was distributed with this source code. Chris@0: */ Chris@0: Chris@0: namespace Symfony\Component\VarDumper\Caster; Chris@0: Chris@0: use Symfony\Component\VarDumper\Cloner\Stub; Chris@0: Chris@0: /** Chris@0: * Casts a caster's Stub. Chris@0: * Chris@0: * @author Nicolas Grekas
Chris@0: */ Chris@0: class StubCaster Chris@0: { Chris@0: public static function castStub(Stub $c, array $a, Stub $stub, $isNested) Chris@0: { Chris@0: if ($isNested) { Chris@0: $stub->type = $c->type; Chris@0: $stub->class = $c->class; Chris@0: $stub->value = $c->value; Chris@0: $stub->handle = $c->handle; Chris@0: $stub->cut = $c->cut; Chris@0: $stub->attr = $c->attr; Chris@0: Chris@17: if (Stub::TYPE_REF === $c->type && !$c->class && \is_string($c->value) && !preg_match('//u', $c->value)) { Chris@0: $stub->type = Stub::TYPE_STRING; Chris@0: $stub->class = Stub::STRING_BINARY; Chris@0: } Chris@0: Chris@17: $a = []; Chris@0: } Chris@0: Chris@0: return $a; Chris@0: } Chris@0: Chris@0: public static function castCutArray(CutArrayStub $c, array $a, Stub $stub, $isNested) Chris@0: { Chris@0: return $isNested ? $c->preservedSubset : $a; Chris@0: } Chris@0: Chris@0: public static function cutInternals($obj, array $a, Stub $stub, $isNested) Chris@0: { Chris@0: if ($isNested) { Chris@17: $stub->cut += \count($a); Chris@0: Chris@17: return []; Chris@0: } Chris@0: Chris@0: return $a; Chris@0: } Chris@0: Chris@0: public static function castEnum(EnumStub $c, array $a, Stub $stub, $isNested) Chris@0: { Chris@0: if ($isNested) { Chris@0: $stub->class = $c->dumpKeys ? '' : null; Chris@0: $stub->handle = 0; Chris@0: $stub->value = null; Chris@0: $stub->cut = $c->cut; Chris@0: $stub->attr = $c->attr; Chris@0: Chris@17: $a = []; Chris@0: Chris@0: if ($c->value) { Chris@0: foreach (array_keys($c->value) as $k) { Chris@0: $keys[] = !isset($k[0]) || "\0" !== $k[0] ? Caster::PREFIX_VIRTUAL.$k : $k; Chris@0: } Chris@0: // Preserve references with array_combine() Chris@0: $a = array_combine($keys, $c->value); Chris@0: } Chris@0: } Chris@0: Chris@0: return $a; Chris@0: } Chris@0: }