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