blob: 073c56efbd4c38610ab4e319939aab5e2fcc1688 [file] [log] [blame]
Matthias Andreas Benkard7b2a3a12021-08-16 10:57:25 +02001<?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
12namespace Symfony\Component\VarDumper\Cloner;
13
14/**
15 * Represents the main properties of a PHP variable.
16 *
17 * @author Nicolas Grekas <p@tchwork.com>
18 */
19class Stub
20{
21 public const TYPE_REF = 1;
22 public const TYPE_STRING = 2;
23 public const TYPE_ARRAY = 3;
24 public const TYPE_OBJECT = 4;
25 public const TYPE_RESOURCE = 5;
26
27 public const STRING_BINARY = 1;
28 public const STRING_UTF8 = 2;
29
30 public const ARRAY_ASSOC = 1;
31 public const ARRAY_INDEXED = 2;
32
33 public $type = self::TYPE_REF;
34 public $class = '';
35 public $value;
36 public $cut = 0;
37 public $handle = 0;
38 public $refCount = 0;
39 public $position = 0;
40 public $attr = [];
41
42 private static $defaultProperties = [];
43
44 /**
45 * @internal
46 */
47 public function __sleep(): array
48 {
49 $properties = [];
50
51 if (!isset(self::$defaultProperties[$c = static::class])) {
52 self::$defaultProperties[$c] = get_class_vars($c);
53
54 foreach ((new \ReflectionClass($c))->getStaticProperties() as $k => $v) {
55 unset(self::$defaultProperties[$c][$k]);
56 }
57 }
58
59 foreach (self::$defaultProperties[$c] as $k => $v) {
60 if ($this->$k !== $v) {
61 $properties[] = $k;
62 }
63 }
64
65 return $properties;
66 }
67}