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) { $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()));

preferences:
43.93 ms | 402 KiB | 5 Q