<?php
function foo(&$a, $b) {
$a = 'modified';
$b = 'modified';
}
class C {
function foo(&$a, $b) {
$a = 'modified';
$b = 'modified';
}
}
class S {
static function foo(&$a, $b) {
$a = 'modified';
$b = 'modified';
}
}
$vv["'foo'"] = 'foo';
$vv["['S', 'foo']"] = ['S', 'foo'];
$vv["[new C, 'foo']"] = [new C, 'foo'];
$vv["function(..){..}"] = function(&$a, $b) {
$a = 'modified';
$b = 'modified';
};
$vv["'S::foo'"] = 'S::foo';
foreach ($vv as $label => $v) {
print $label;
print is_callable($v) ? 'is callable' : 'is not callable';
print "\n";
$a = 'orig';
$b = 'orig';
call_user_func_array($v, array(&$a, &$b));
assert($a === 'modified');
assert($b === 'orig');
$a = 'orig';
$b = 'orig';
$v($a, $b);
assert($a === 'modified');
assert($b === 'orig');
}
preferences:
26.62 ms | 402 KiB | 5 Q