1--TEST--
2ReflectionClass::getDefaultProperties(), ReflectionClass::getStaticProperties()
3--CREDITS--
4Robin Fernandes <robinf@php.net>
5Steve Seear <stevseea@php.net>
6--FILE--
7<?php
8
9
10class A {
11	static public $statPubC = "stat pubC in A";
12	static protected $statProtC = "stat protC in A";
13	static private $statPrivC = "stat privC in A";
14
15	static public $statPubA = "stat pubA in A";
16	static protected $statProtA = "stat protA in A";
17	static private $statPrivA = "stat privA in A";
18
19	public $pubC = "pubC in A";
20	protected $protC = "protC in A";
21	private $privC = "privC in A";
22
23	public $pubA = "pubA in A";
24	protected $protA = "protA in A";
25	private $privA = "privA in A";
26}
27
28class B extends A {
29	static public $statPubC = "stat pubC in B";
30	static protected $statProtC = "stat protC in B";
31	static private $statPrivC = "stat privC in B";
32
33	static public $statPubB = "stat pubB in B";
34	static protected $statProtB = "stat protB in B";
35	static private $statPrivB = "stat privB in B";
36
37	public $pubC = "pubC in B";
38	protected $protC = "protC in B";
39	private $privC = "privC in B";
40
41	public $pubB = "pubB in B";
42	protected $protB = "protB in B";
43	private $privB = "privB in B";
44}
45
46class C extends B {
47	static public $statPubC = "stat pubC in C";
48	static protected $statProtC = "stat protC in C";
49	static private $statPrivC = "stat privC in C";
50
51	public $pubC = "pubC in C";
52	protected $protC = "protC in C";
53	private $privC = "privC in C";
54}
55
56class X {
57	static public $statPubC = "stat pubC in X";
58	static protected $statProtC = "stat protC in X";
59	static private $statPrivC = "stat privC in X";
60
61	public $pubC = "pubC in X";
62	protected $protC = "protC in X";
63	private $privC = "privC in X";
64}
65
66$classes = array('A', 'B', 'C', 'X');
67foreach ($classes as $class) {
68	$rc = new ReflectionClass($class);
69	echo "\n\n---- Static properties in $class ----\n";
70	print_r($rc->getStaticProperties());
71	echo "\n\n---- Default properties in $class ----\n";
72	print_r($rc->getDefaultProperties());
73}
74
75?>
76--EXPECTF--
77---- Static properties in A ----
78Array
79(
80    [statPubC] => stat pubC in A
81    [statProtC] => stat protC in A
82    [statPrivC] => stat privC in A
83    [statPubA] => stat pubA in A
84    [statProtA] => stat protA in A
85    [statPrivA] => stat privA in A
86)
87
88
89---- Default properties in A ----
90Array
91(
92    [statPubC] => stat pubC in A
93    [statProtC] => stat protC in A
94    [statPrivC] => stat privC in A
95    [statPubA] => stat pubA in A
96    [statProtA] => stat protA in A
97    [statPrivA] => stat privA in A
98    [pubC] => pubC in A
99    [protC] => protC in A
100    [privC] => privC in A
101    [pubA] => pubA in A
102    [protA] => protA in A
103    [privA] => privA in A
104)
105
106
107---- Static properties in B ----
108Array
109(
110    [statPubC] => stat pubC in B
111    [statProtC] => stat protC in B
112    [statPrivC] => stat privC in B
113    [statPubB] => stat pubB in B
114    [statProtB] => stat protB in B
115    [statPrivB] => stat privB in B
116    [statPubA] => stat pubA in A
117    [statProtA] => stat protA in A
118)
119
120
121---- Default properties in B ----
122Array
123(
124    [statPubC] => stat pubC in B
125    [statProtC] => stat protC in B
126    [statPrivC] => stat privC in B
127    [statPubB] => stat pubB in B
128    [statProtB] => stat protB in B
129    [statPrivB] => stat privB in B
130    [statPubA] => stat pubA in A
131    [statProtA] => stat protA in A
132    [pubC] => pubC in B
133    [protC] => protC in B
134    [privC] => privC in B
135    [pubB] => pubB in B
136    [protB] => protB in B
137    [privB] => privB in B
138    [pubA] => pubA in A
139    [protA] => protA in A
140)
141
142
143---- Static properties in C ----
144Array
145(
146    [statPubC] => stat pubC in C
147    [statProtC] => stat protC in C
148    [statPrivC] => stat privC in C
149    [statPubB] => stat pubB in B
150    [statProtB] => stat protB in B
151    [statPubA] => stat pubA in A
152    [statProtA] => stat protA in A
153)
154
155
156---- Default properties in C ----
157Array
158(
159    [statPubC] => stat pubC in C
160    [statProtC] => stat protC in C
161    [statPrivC] => stat privC in C
162    [statPubB] => stat pubB in B
163    [statProtB] => stat protB in B
164    [statPubA] => stat pubA in A
165    [statProtA] => stat protA in A
166    [pubC] => pubC in C
167    [protC] => protC in C
168    [privC] => privC in C
169    [pubB] => pubB in B
170    [protB] => protB in B
171    [pubA] => pubA in A
172    [protA] => protA in A
173)
174
175
176---- Static properties in X ----
177Array
178(
179    [statPubC] => stat pubC in X
180    [statProtC] => stat protC in X
181    [statPrivC] => stat privC in X
182)
183
184
185---- Default properties in X ----
186Array
187(
188    [statPubC] => stat pubC in X
189    [statProtC] => stat protC in X
190    [statPrivC] => stat privC in X
191    [pubC] => pubC in X
192    [protC] => protC in X
193    [privC] => privC in X
194)
195