1--TEST-- 2Test usage of ReflectionProperty methods __toString(), export(), getName(), isPublic(), isPrivate(), isProtected(), isStatic(), getValue() and setValue(). 3--FILE-- 4<?php 5 6function reflectProperty($class, $property) { 7 $propInfo = new ReflectionProperty($class, $property); 8 echo "**********************************\n"; 9 echo "Reflecting on property $class::$property\n\n"; 10 echo "__toString():\n"; 11 var_dump($propInfo->__toString()); 12 echo "export():\n"; 13 var_dump(ReflectionProperty::export($class, $property, true)); 14 echo "export():\n"; 15 var_dump(ReflectionProperty::export($class, $property, false)); 16 echo "getName():\n"; 17 var_dump($propInfo->getName()); 18 echo "isPublic():\n"; 19 var_dump($propInfo->isPublic()); 20 echo "isPrivate():\n"; 21 var_dump($propInfo->isPrivate()); 22 echo "isProtected():\n"; 23 var_dump($propInfo->isProtected()); 24 echo "isStatic():\n"; 25 var_dump($propInfo->isStatic()); 26 $instance = new $class(); 27 if ($propInfo->isPublic()) { 28 echo "getValue():\n"; 29 var_dump($propInfo->getValue($instance)); 30 $propInfo->setValue($instance, "NewValue"); 31 echo "getValue() after a setValue():\n"; 32 var_dump($propInfo->getValue($instance)); 33 } 34 echo "\n**********************************\n"; 35} 36 37class TestClass { 38 public $pub; 39 static public $stat = "static property"; 40 protected $prot = 4; 41 private $priv = "keepOut"; 42} 43 44reflectProperty("TestClass", "pub"); 45reflectProperty("TestClass", "stat"); 46reflectProperty("TestClass", "prot"); 47reflectProperty("TestClass", "priv"); 48 49?> 50--EXPECT-- 51********************************** 52Reflecting on property TestClass::pub 53 54__toString(): 55string(35) "Property [ <default> public $pub ] 56" 57export(): 58string(35) "Property [ <default> public $pub ] 59" 60export(): 61Property [ <default> public $pub ] 62 63NULL 64getName(): 65string(3) "pub" 66isPublic(): 67bool(true) 68isPrivate(): 69bool(false) 70isProtected(): 71bool(false) 72isStatic(): 73bool(false) 74getValue(): 75NULL 76getValue() after a setValue(): 77string(8) "NewValue" 78 79********************************** 80********************************** 81Reflecting on property TestClass::stat 82 83__toString(): 84string(33) "Property [ public static $stat ] 85" 86export(): 87string(33) "Property [ public static $stat ] 88" 89export(): 90Property [ public static $stat ] 91 92NULL 93getName(): 94string(4) "stat" 95isPublic(): 96bool(true) 97isPrivate(): 98bool(false) 99isProtected(): 100bool(false) 101isStatic(): 102bool(true) 103getValue(): 104string(15) "static property" 105getValue() after a setValue(): 106string(8) "NewValue" 107 108********************************** 109********************************** 110Reflecting on property TestClass::prot 111 112__toString(): 113string(39) "Property [ <default> protected $prot ] 114" 115export(): 116string(39) "Property [ <default> protected $prot ] 117" 118export(): 119Property [ <default> protected $prot ] 120 121NULL 122getName(): 123string(4) "prot" 124isPublic(): 125bool(false) 126isPrivate(): 127bool(false) 128isProtected(): 129bool(true) 130isStatic(): 131bool(false) 132 133********************************** 134********************************** 135Reflecting on property TestClass::priv 136 137__toString(): 138string(37) "Property [ <default> private $priv ] 139" 140export(): 141string(37) "Property [ <default> private $priv ] 142" 143export(): 144Property [ <default> private $priv ] 145 146NULL 147getName(): 148string(4) "priv" 149isPublic(): 150bool(false) 151isPrivate(): 152bool(true) 153isProtected(): 154bool(false) 155isStatic(): 156bool(false) 157 158********************************** 159 160 161