我有一个这样的函数变量。。。
$aName = "My Name";
函数需要像这样传入:
$sayHelloFunction = function sayHello($aName){
echo($aName);
}
然后,我有一个负责执行sayHelloFunction的方法:
runningFunction($sayHelloFunction($aName));
在runningFunction中,它会有一些执行函数的条件,但当我将"$sayHelloFunction($aName("传递给runningFunction时,它会自动执行,但我也想传递变量$aName,我该如何实现?非常感谢。
runningFunction($sayHelloFunction, $aName);
简单。
您必须分别传递参数。但是,您可以将它们封装在一个数组中,以便将它们作为单个参数传递给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
}
}
将参数作为数组传递,然后使用call_user_func_array()
调用函数。
这样,您的runningFunction()
将是绝对抽象的(正如您所要求的(,它可以调用任何类型的函数,您有责任传递正确数量的参数。
function runningFunction ($callback, $parameters=array()) {
call_user_func_array($callback, $parameters);
}
runningFunction($sayHelloFunction, array($aName));
call_user_func_array((
xconspirisst建议将$aName
作为单独的参数传递给函数。
关于可变函数的详细信息可以在PHP网站上找到。
调用runningFunction
时使用匿名函数
function runningFunction($func) {
$func();
}
runningFunction(function() {
$sayHelloFunction($aName));
// You can do more function calls here...
});