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--EXPECTF-- 51********************************** 52Reflecting on property TestClass::pub 53 54__toString(): 55string(35) "Property [ <default> public $pub ] 56" 57export(): 58 59Deprecated: Function ReflectionProperty::export() is deprecated in %s on line %d 60string(35) "Property [ <default> public $pub ] 61" 62export(): 63 64Deprecated: Function ReflectionProperty::export() is deprecated in %s on line %d 65Property [ <default> public $pub ] 66 67NULL 68getName(): 69string(3) "pub" 70isPublic(): 71bool(true) 72isPrivate(): 73bool(false) 74isProtected(): 75bool(false) 76isStatic(): 77bool(false) 78getValue(): 79NULL 80getValue() after a setValue(): 81string(8) "NewValue" 82 83********************************** 84********************************** 85Reflecting on property TestClass::stat 86 87__toString(): 88string(33) "Property [ public static $stat ] 89" 90export(): 91 92Deprecated: Function ReflectionProperty::export() is deprecated in %s on line %d 93string(33) "Property [ public static $stat ] 94" 95export(): 96 97Deprecated: Function ReflectionProperty::export() is deprecated in %s on line %d 98Property [ public static $stat ] 99 100NULL 101getName(): 102string(4) "stat" 103isPublic(): 104bool(true) 105isPrivate(): 106bool(false) 107isProtected(): 108bool(false) 109isStatic(): 110bool(true) 111getValue(): 112string(15) "static property" 113getValue() after a setValue(): 114string(8) "NewValue" 115 116********************************** 117********************************** 118Reflecting on property TestClass::prot 119 120__toString(): 121string(39) "Property [ <default> protected $prot ] 122" 123export(): 124 125Deprecated: Function ReflectionProperty::export() is deprecated in %s on line %d 126string(39) "Property [ <default> protected $prot ] 127" 128export(): 129 130Deprecated: Function ReflectionProperty::export() is deprecated in %s on line %d 131Property [ <default> protected $prot ] 132 133NULL 134getName(): 135string(4) "prot" 136isPublic(): 137bool(false) 138isPrivate(): 139bool(false) 140isProtected(): 141bool(true) 142isStatic(): 143bool(false) 144 145********************************** 146********************************** 147Reflecting on property TestClass::priv 148 149__toString(): 150string(37) "Property [ <default> private $priv ] 151" 152export(): 153 154Deprecated: Function ReflectionProperty::export() is deprecated in %s on line %d 155string(37) "Property [ <default> private $priv ] 156" 157export(): 158 159Deprecated: Function ReflectionProperty::export() is deprecated in %s on line %d 160Property [ <default> private $priv ] 161 162NULL 163getName(): 164string(4) "priv" 165isPublic(): 166bool(false) 167isPrivate(): 168bool(true) 169isProtected(): 170bool(false) 171isStatic(): 172bool(false) 173 174********************************** 175