mirror of
https://github.com/php/php-src.git
synced 2024-10-20 16:02:44 +00:00
107 lines
1.8 KiB
PHP
107 lines
1.8 KiB
PHP
--TEST--
|
|
get_object_vars(): visibility from static methods (target object passed as arg)
|
|
--FILE--
|
|
<?php
|
|
/* Prototype : proto array get_object_vars(object obj)
|
|
* Description: Returns an array of object properties
|
|
* Source code: Zend/zend_builtin_functions.c
|
|
* Alias to functions:
|
|
*/
|
|
|
|
Class A {
|
|
private $hiddenPriv = 'A::hiddenPriv';
|
|
|
|
public static function test($b) {
|
|
echo __METHOD__ . "\n";
|
|
var_dump(get_object_vars($b));
|
|
}
|
|
}
|
|
|
|
Class B extends A {
|
|
private $hiddenPriv = 'B::hiddenPriv';
|
|
private $priv = 'B::priv';
|
|
protected $prot = 'B::prot';
|
|
public $pub = 'B::pub';
|
|
|
|
public static function test($b) {
|
|
echo __METHOD__ . "\n";
|
|
var_dump(get_object_vars($b));
|
|
}
|
|
}
|
|
|
|
Class C extends B {
|
|
private $hiddenPriv = 'C::hiddenPriv';
|
|
|
|
public static function test($b) {
|
|
echo __METHOD__ . "\n";
|
|
var_dump(get_object_vars($b));
|
|
}
|
|
}
|
|
|
|
Class X {
|
|
public static function test($b) {
|
|
echo __METHOD__ . "\n";
|
|
var_dump(get_object_vars($b));
|
|
}
|
|
}
|
|
|
|
|
|
$b = new B;
|
|
echo "\n---( Global scope: )---\n";
|
|
var_dump(get_object_vars($b));
|
|
echo "\n---( Declaring class: )---\n";
|
|
B::test($b);
|
|
echo "\n---( Subclass: )---\n";
|
|
C::test($b);
|
|
echo "\n---( Superclass: )---\n";
|
|
A::test($b);
|
|
echo "\n---( Unrelated class: )---\n";
|
|
X::test($b);
|
|
?>
|
|
--EXPECTF--
|
|
|
|
---( Global scope: )---
|
|
array(1) {
|
|
["pub"]=>
|
|
string(6) "B::pub"
|
|
}
|
|
|
|
---( Declaring class: )---
|
|
B::test
|
|
array(4) {
|
|
["hiddenPriv"]=>
|
|
string(13) "B::hiddenPriv"
|
|
["priv"]=>
|
|
string(7) "B::priv"
|
|
["prot"]=>
|
|
string(7) "B::prot"
|
|
["pub"]=>
|
|
string(6) "B::pub"
|
|
}
|
|
|
|
---( Subclass: )---
|
|
C::test
|
|
array(2) {
|
|
["prot"]=>
|
|
string(7) "B::prot"
|
|
["pub"]=>
|
|
string(6) "B::pub"
|
|
}
|
|
|
|
---( Superclass: )---
|
|
A::test
|
|
array(3) {
|
|
["prot"]=>
|
|
string(7) "B::prot"
|
|
["pub"]=>
|
|
string(6) "B::pub"
|
|
["hiddenPriv"]=>
|
|
string(13) "A::hiddenPriv"
|
|
}
|
|
|
|
---( Unrelated class: )---
|
|
X::test
|
|
array(1) {
|
|
["pub"]=>
|
|
string(6) "B::pub"
|
|
}
|