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>