3v4l.org

run code in 300+ PHP versions simultaneously
<?php function run_test($name, $callback) { $result = $callback(); echo "ran '$name' with result ", var_export($result, true), "\n"; } $method1 = function($test) { return function () use ($test) { if (method_exists($test, 'setup')) { $test->setup(); } }; }; $method2 = function($test) { $func = method_exists($test, 'setup') ? function() use ($test) { $test->setup(); } : function () {}; return function () use ($func) { $func(); }; }; $method3 = function($test) { $test = method_exists($test, 'setup') ? array($test, 'setup') : function () {}; return function () use ($test) { call_user_func($test); }; }; class Foo {} class Bar { function setup() {} } run_test('foo1', $method1(new Foo())); run_test('bar1', $method1(new Bar())); run_test('foo2', $method2(new Foo())); run_test('bar2', $method2(new Bar())); run_test('foo3', $method3(new Foo())); run_test('bar3', $method3(new Bar()));
Output for 5.3.0 - 5.3.29, 5.4.0 - 5.4.45, 5.5.0 - 5.5.38, 5.6.0 - 5.6.38, 7.0.0 - 7.0.33, 7.1.0 - 7.1.25, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
ran 'foo1' with result NULL ran 'bar1' with result NULL ran 'foo2' with result NULL ran 'bar2' with result NULL ran 'foo3' with result NULL ran 'bar3' with result NULL
Output for 4.4.2 - 4.4.9, 5.1.0 - 5.1.6, 5.2.0 - 5.2.17
Parse error: syntax error, unexpected T_FUNCTION in /in/gS3ja on line 11
Process exited with code 255.
Output for 4.3.0 - 4.3.1, 4.3.5 - 4.3.11, 4.4.0 - 4.4.1, 5.0.0 - 5.0.5
Parse error: parse error, unexpected T_FUNCTION in /in/gS3ja on line 11
Process exited with code 255.
Output for 4.3.2 - 4.3.4
Parse error: parse error in /in/gS3ja on line 11
Process exited with code 255.

preferences:
268.1 ms | 401 KiB | 425 Q