3v4l.org

run code in 300+ PHP versions simultaneously
<?php trait dumper { public function doIt() { print "get_object_vars()\n"; print_r(get_object_vars($this)); $closure = \Closure::bind(static function ($class) { return get_object_vars($class); }, NULL, $this); $vars = $closure($this); print "\n\nClosure\n"; print_r($vars); } } class A { use dumper; private int $a = 1; } class B extends A { } class C extends B { use dumper; private int $a = 2; } print "Class A\n"; (new A())->doit(); print "\n\nClass B\n"; (new B())->doit(); print "\n\nClass C\n"; (new C())->doit();
Output for 8.1.0 - 8.1.31, 8.2.0 - 8.2.26, 8.3.0 - 8.3.15, 8.4.1 - 8.4.2
Class A get_object_vars() Array ( [a] => 1 ) Closure Array ( [a] => 1 ) Class B get_object_vars() Array ( [a] => 1 ) Closure Array ( ) Class C get_object_vars() Array ( [a] => 2 ) Closure Array ( [a] => 2 )

preferences:
66.29 ms | 406 KiB | 5 Q