Annotation of embedaddon/php/ext/reflection/tests/ReflectionClass_getInterfaces_003.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: ReflectionClass::getInterfaces() - odd ampersand behaviour.
3: --CREDITS--
4: Robin Fernandes <robinf@php.net>
5: Steve Seear <stevseea@php.net>
6: --FILE--
7: <?php
8:
9: echo "An object is in an array and is referenced. As expected, var_dumping the array shows '&':\n";
10: $a = array(new stdclass);
11: $b =& $a[0];
12: var_dump($a);
13:
14: echo "Naturally, this remains true if we modify the object:\n";
15: $a[0]->x = 1;
16: var_dump($a);
17:
18:
19: echo "\n\nObtain the array of interfaces implemented by C.\n";
20: interface I {}
21: class C implements I {}
22: $rc = new ReflectionClass('C');
23: $a = $rc->getInterfaces();
24: echo "The result is an array in which each element is an object (an instance of ReflectionClass)\n";
25: echo "Var_dumping this array shows that the elements are referenced. By what?\n";
26: var_dump($a);
27:
28: echo "Modify the object, and it is apparently no longer referenced.\n";
29: $a['I']->x = 1;
30: var_dump($a);
31:
32: ?>
33: --EXPECTF--
34: An object is in an array and is referenced. As expected, var_dumping the array shows '&':
35: array(1) {
36: [0]=>
37: &object(stdClass)#%d (0) {
38: }
39: }
40: Naturally, this remains true if we modify the object:
41: array(1) {
42: [0]=>
43: &object(stdClass)#%d (1) {
44: ["x"]=>
45: int(1)
46: }
47: }
48:
49:
50: Obtain the array of interfaces implemented by C.
51: The result is an array in which each element is an object (an instance of ReflectionClass)
52: Var_dumping this array shows that the elements are referenced. By what?
53: array(1) {
54: ["I"]=>
55: &object(ReflectionClass)#%d (1) {
56: ["name"]=>
57: string(1) "I"
58: }
59: }
60: Modify the object, and it is apparently no longer referenced.
61: array(1) {
62: ["I"]=>
63: object(ReflectionClass)#%d (2) {
64: ["name"]=>
65: string(1) "I"
66: ["x"]=>
67: int(1)
68: }
69: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>