Annotation of embedaddon/php/ext/reflection/tests/ReflectionClass_setStaticPropertyValue_001.phpt, revision 1.1.1.2
1.1 misho 1: --TEST--
2: ReflectionClass::setStaticPropertyValue()
3: --CREDITS--
4: Robin Fernandes <robinf@php.net>
5: Steve Seear <stevseea@php.net>
1.1.1.2 ! misho 6: --SKIPIF--
! 7: <?php if (version_compare(zend_version(), '2.4.0', '>=')) die('skip ZendEngine 2.3 or below needed'); ?>
1.1 misho 8: --FILE--
9: <?php
10: class A {
11: static private $privateOverridden = "original private";
12: static protected $protectedOverridden = "original protected";
13: static public $publicOverridden = "original public";
14: }
15:
16: class B extends A {
17: static private $privateOverridden = "changed private";
18: static protected $protectedOverridden = "changed protected";
19: static public $publicOverridden = "changed public";
20: }
21:
22: echo "Set static values in A:\n";
23: $rcA = new ReflectionClass('A');
24: $rcA->setStaticPropertyValue("\0A\0privateOverridden", "new value 1");
25: $rcA->setStaticPropertyValue("\0*\0protectedOverridden", "new value 2");
26: $rcA->setStaticPropertyValue("publicOverridden", "new value 3");
27: print_r($rcA->getStaticProperties());
28:
29: echo "\nSet static values in B:\n";
30: $rcB = new ReflectionClass('B');
31: $rcB->setStaticPropertyValue("\0A\0privateOverridden", "new value 4");
32: $rcB->setStaticPropertyValue("\0B\0privateOverridden", "new value 5");
33: $rcB->setStaticPropertyValue("\0*\0protectedOverridden", "new value 6");
34: $rcB->setStaticPropertyValue("publicOverridden", "new value 7");
35: print_r($rcA->getStaticProperties());
36: print_r($rcB->getStaticProperties());
37:
38: echo "\nSet non-existent values from A with no default value:\n";
39: try {
40: var_dump($rcA->setStaticPropertyValue("protectedOverridden", "new value 8"));
41: echo "you should not see this";
42: } catch (Exception $e) {
43: echo $e->getMessage() . "\n";
44: }
45:
46: try {
47: var_dump($rcA->setStaticPropertyValue("privateOverridden", "new value 9"));
48: echo "you should not see this";
49: } catch (Exception $e) {
50: echo $e->getMessage() . "\n";
51: }
52:
53: ?>
54: --EXPECTF--
55: Set static values in A:
56: Array
57: (
58: [privateOverridden] => new value 1
59: [protectedOverridden] => new value 2
60: [publicOverridden] => new value 3
61: )
62:
63: Set static values in B:
64: Array
65: (
66: [privateOverridden] => new value 4
67: [protectedOverridden] => new value 2
68: [publicOverridden] => new value 3
69: )
70: Array
71: (
72: [privateOverridden] => new value 5
73: [protectedOverridden] => new value 6
74: [publicOverridden] => new value 7
75: )
76:
77: Set non-existent values from A with no default value:
78: Class A does not have a property named protectedOverridden
79: Class A does not have a property named privateOverridden
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>