Вам придется передавать аргументы отдельно. Однако вы можете заключить их в массив, чтобы передать их runningFunction
как один аргумент, например:
$printFunction = function($args) {
print $args['lastname'].', '.$args['firstname'];
};
function runningFunction($f, $a) {
$f($a);
}
$firstname = 'Bob';
$lastname = 'Smith';
$functionArguments = array(
'firstname' => $firstname,
'lastname' => $lastname
);
runningFunction($printFunction, $functionArguments);
Если вы хотите, чтобы ваши динамические функции получали «правильные» аргументы, то я не вижу способа обойти что-то вроде этого:
function runningFunction($f, $a) {
switch(count($a)) {
0: $f(); break;
1: $f($a[0]); break;
2: $f($a[0], $a[1]); break;
3: $f($a[0], $a[1], $a[2]); break;
// and so on
}
}