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.29, 8.2.0 - 8.2.20, 8.3.0 - 8.3.8
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:
95.52 ms | 404 KiB | 65 Q