3v4l.org

run code in 300+ PHP versions simultaneously
<?php // Current output: // TestWithPublicMethods@enter OK // TestWithPrivateMethods@enter OK // TestWithPublicMethods@leave OK // // Warning: (Registered shutdown functions) Unable to call TestWithPrivateMethods::leave() - function does not exist in Unknown on line 0 // Expected: // TestWithPublicMethods@enter OK // TestWithPrivateMethods@enter OK // TestWithPublicMethods@leave OK // TestWithPrivateMethods@leave OK class TestWithPublicMethods { public function test() { spl_autoload_register([ $this, 'enter' ], true, true); register_shutdown_function([ $this, 'leave' ]); } public function enter() { eval('class TestWithPublicMethodsAutoload {}'); echo __CLASS__ . '@' . __FUNCTION__ . " OK\n"; } public function leave() { echo __CLASS__ . '@' . __FUNCTION__ . " OK\n"; } } (new TestWithPublicMethods)->test(); new TestWithPublicMethodsAutoload; class TestWithPrivateMethods { public function test() { spl_autoload_register([ $this, 'enter' ], true, true); register_shutdown_function([ $this, 'leave' ]); } private function enter() { eval('class TestWithPrivateMethodsAutoload {}'); echo __CLASS__ . '@' . __FUNCTION__ . " OK\n"; } private function leave() { echo __CLASS__ . '@' . __FUNCTION__ . " OK\n"; } } (new TestWithPrivateMethods)->test(); new TestWithPrivateMethodsAutoload;

preferences:
58.6 ms | 402 KiB | 5 Q