1<?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 const TYPE_REF = 1; 22 const TYPE_STRING = 2; 23 const TYPE_ARRAY = 3; 24 const TYPE_OBJECT = 4; 25 const TYPE_RESOURCE = 5; 26 27 const STRING_BINARY = 1; 28 const STRING_UTF8 = 2; 29 30 const ARRAY_ASSOC = 1; 31 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() 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} 68