<?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