Annotation of embedaddon/php/ext/reflection/tests/property_exists.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: Reflection and property_exists()
3: --FILE--
4: <?php
5:
6: class A
7: {
8: public $a = 1;
9: protected $b = 2;
10: private $c = 3;
11:
12: public $empty;
13: public $init = 1;
14:
15: function __toString()
16: {
17: return 'obj(' . get_class($this) . ')';
18: }
19:
20: static function test($oc, $props)
21: {
22: echo '===' . __CLASS__ . "===\n";
23: foreach($props as $p2) {
24: echo $oc, '::$' , $p2, "\n";
25: var_dump(property_exists($oc, $p2));
26: }
27: }
28: }
29:
30: class B extends A
31: {
32: private $c = 4;
33:
34: static function test($oc, $props)
35: {
36: echo '===' . __CLASS__ . "===\n";
37: foreach($props as $p2) {
38: echo $oc, '::$' , $p2, "\n";
39: var_dump(property_exists($oc, $p2));
40: }
41: }
42: }
43:
44: class C extends B
45: {
46: private $d = 5;
47:
48: static function test($oc, $props)
49: {
50: echo '===' . __CLASS__ . "===\n";
51: foreach($props as $p2) {
52: echo $oc, '::$' , $p2, "\n";
53: var_dump(property_exists($oc, $p2));
54: }
55: }
56: }
57:
58: $oA = new A;
59: $oA->e = 6;
60:
61: $oC = new C;
62:
63: $pc = array($oA, 'A', 'B', 'C', $oC);
64: $pr = array('a', 'b', 'c', 'd', 'e');
65:
66: foreach($pc as $p1) {
67: if (is_object($p1)) {
68: $p1->test($p1, $pr);
69: } else {
70: $r = new ReflectionMethod($p1, 'test');
71: $r->invoke(NULL, $p1, $pr);
72: }
73: echo "===GLOBAL===\n";
74: foreach($pr as $p2) {
75: echo $p1, '::$' , $p2, "\n";
76: var_dump(property_exists($p1, $p2));
77: }
78: }
79:
80: echo "===PROBLEMS===\n";
81: var_dump(property_exists(NULL, 'empty'));
82: var_dump(property_exists(25,'empty'));
83: var_dump(property_exists('',''));
84: var_dump(property_exists('A',''));
85: var_dump(property_exists('A','123'));
86: var_dump(property_exists('A','init'));
87: var_dump(property_exists('A','empty'));
88: var_dump(property_exists(new A, ''));
89: var_dump(property_exists(new A, '123'));
90: var_dump(property_exists(new A, 'init'));
91: var_dump(property_exists(new A, 'empty'));
92: ?>
93: ===DONE===
94: <?php exit(0); ?>
95: --EXPECTF--
96: ===A===
97: obj(A)::$a
98: bool(true)
99: obj(A)::$b
100: bool(true)
101: obj(A)::$c
102: bool(true)
103: obj(A)::$d
104: bool(false)
105: obj(A)::$e
106: bool(true)
107: ===GLOBAL===
108: obj(A)::$a
109: bool(true)
110: obj(A)::$b
111: bool(true)
112: obj(A)::$c
113: bool(true)
114: obj(A)::$d
115: bool(false)
116: obj(A)::$e
117: bool(true)
118: ===A===
119: A::$a
120: bool(true)
121: A::$b
122: bool(true)
123: A::$c
124: bool(true)
125: A::$d
126: bool(false)
127: A::$e
128: bool(false)
129: ===GLOBAL===
130: A::$a
131: bool(true)
132: A::$b
133: bool(true)
134: A::$c
135: bool(true)
136: A::$d
137: bool(false)
138: A::$e
139: bool(false)
140: ===B===
141: B::$a
142: bool(true)
143: B::$b
144: bool(true)
145: B::$c
146: bool(true)
147: B::$d
148: bool(false)
149: B::$e
150: bool(false)
151: ===GLOBAL===
152: B::$a
153: bool(true)
154: B::$b
155: bool(true)
156: B::$c
157: bool(true)
158: B::$d
159: bool(false)
160: B::$e
161: bool(false)
162: ===C===
163: C::$a
164: bool(true)
165: C::$b
166: bool(true)
167: C::$c
168: bool(false)
169: C::$d
170: bool(true)
171: C::$e
172: bool(false)
173: ===GLOBAL===
174: C::$a
175: bool(true)
176: C::$b
177: bool(true)
178: C::$c
179: bool(false)
180: C::$d
181: bool(true)
182: C::$e
183: bool(false)
184: ===C===
185: obj(C)::$a
186: bool(true)
187: obj(C)::$b
188: bool(true)
189: obj(C)::$c
190: bool(false)
191: obj(C)::$d
192: bool(true)
193: obj(C)::$e
194: bool(false)
195: ===GLOBAL===
196: obj(C)::$a
197: bool(true)
198: obj(C)::$b
199: bool(true)
200: obj(C)::$c
201: bool(false)
202: obj(C)::$d
203: bool(true)
204: obj(C)::$e
205: bool(false)
206: ===PROBLEMS===
207:
208: Warning: First parameter must either be an object or the name of an existing class in %sproperty_exists.php on line %d
209: NULL
210:
211: Warning: First parameter must either be an object or the name of an existing class in %sproperty_exists.php on line %d
212: NULL
213: bool(false)
214: bool(false)
215: bool(false)
216: bool(true)
217: bool(true)
218: bool(false)
219: bool(false)
220: bool(true)
221: bool(true)
222: ===DONE===
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>