Annotation of embedaddon/php/ext/reflection/tests/ReflectionClass_setStaticPropertyValue_001.phpt, revision 1.1.1.1

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

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>