3v4l.org

run code in 300+ PHP versions simultaneously
<?php function run_test($name, $callback, $iterations) { $result = $callback(); echo "ran '$name' with result ", var_export($result, true), "\n"; } class Foo { } class Bar { function setup() {} } $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') ? [$test, 'setup'] : function () {}; return function () use ($test) { $test(); }; }; const ITERATIONS = 1; run_test('foo1', $method1(new Foo()), ITERATIONS); run_test('bar1', $method1(new Bar()), ITERATIONS); run_test('foo2', $method2(new Foo()), ITERATIONS); run_test('bar2', $method2(new Bar()), ITERATIONS); run_test('foo3', $method3(new Foo()), ITERATIONS); run_test('bar3', $method3(new Bar()), ITERATIONS);
Output for 5.4.0 - 5.4.45, 5.5.0 - 5.5.38, 5.6.0 - 5.6.28, 7.0.0 - 7.0.20, 7.1.0 - 7.1.33, 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 5.3.0 - 5.3.29
Parse error: syntax error, unexpected '[' in /in/HKHqu on line 39
Process exited with code 255.
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/HKHqu on line 18
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/HKHqu on line 18
Process exited with code 255.
Output for 4.3.2 - 4.3.4
Parse error: parse error in /in/HKHqu on line 18
Process exited with code 255.

preferences:
221.99 ms | 401 KiB | 402 Q