Return to get_object_vars_basic_001.phpt CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / standard / tests / class_object |
1.1 misho 1: --TEST-- 2: get_object_vars(): visibility from static methods (target object passed as arg) 3: --FILE-- 4: <?php 5: /* Prototype : proto array get_object_vars(object obj) 6: * Description: Returns an array of object properties 7: * Source code: Zend/zend_builtin_functions.c 8: * Alias to functions: 9: */ 10: 11: Class A { 12: private $hiddenPriv = 'A::hiddenPriv'; 13: 14: public static function test($b) { 15: echo __METHOD__ . "\n"; 16: var_dump(get_object_vars($b)); 17: } 18: } 19: 20: Class B extends A { 21: private $hiddenPriv = 'B::hiddenPriv'; 22: private $priv = 'B::priv'; 23: protected $prot = 'B::prot'; 24: public $pub = 'B::pub'; 25: 26: public static function test($b) { 27: echo __METHOD__ . "\n"; 28: var_dump(get_object_vars($b)); 29: } 30: } 31: 32: Class C extends B { 33: private $hiddenPriv = 'C::hiddenPriv'; 34: 35: public static function test($b) { 36: echo __METHOD__ . "\n"; 37: var_dump(get_object_vars($b)); 38: } 39: } 40: 41: Class X { 42: public static function test($b) { 43: echo __METHOD__ . "\n"; 44: var_dump(get_object_vars($b)); 45: } 46: } 47: 48: 49: $b = new B; 50: echo "\n---( Global scope: )---\n"; 51: var_dump(get_object_vars($b)); 52: echo "\n---( Declaring class: )---\n"; 53: B::test($b); 54: echo "\n---( Subclass: )---\n"; 55: C::test($b); 56: echo "\n---( Superclass: )---\n"; 57: A::test($b); 58: echo "\n---( Unrelated class: )---\n"; 59: X::test($b); 60: ?> 61: --EXPECTF-- 62: 63: ---( Global scope: )--- 64: array(1) { 65: ["pub"]=> 66: string(6) "B::pub" 67: } 68: 69: ---( Declaring class: )--- 70: B::test 71: array(4) { 72: ["hiddenPriv"]=> 73: string(13) "B::hiddenPriv" 74: ["priv"]=> 75: string(7) "B::priv" 76: ["prot"]=> 77: string(7) "B::prot" 78: ["pub"]=> 79: string(6) "B::pub" 80: } 81: 82: ---( Subclass: )--- 83: C::test 84: array(2) { 85: ["prot"]=> 86: string(7) "B::prot" 87: ["pub"]=> 88: string(6) "B::pub" 89: } 90: 91: ---( Superclass: )--- 92: A::test 93: array(3) { 94: ["prot"]=> 95: string(7) "B::prot" 96: ["pub"]=> 97: string(6) "B::pub" 98: ["hiddenPriv"]=> 99: string(13) "A::hiddenPriv" 100: } 101: 102: ---( Unrelated class: )--- 103: X::test 104: array(1) { 105: ["pub"]=> 106: string(6) "B::pub" 107: }