可以通过引用传递函数吗?
如下所示:
function call($func){
$func();
}
function test(){
echo "hello world!";
}
call(test);
我知道你可以做'test'
,但我真的不想那样做,因为我需要通过引用传递函数。
只有通过匿名函数才能做到这一点吗?
说明:如果您从C++回想一下,您可以通过指针传递函数:
void call(void (*func)(void)){
func();
}
或者在Python中:
def call(func):
func()
这就是我正在努力实现的目标。
发布于 2011-08-31 04:14:03
call_user_func()
的问题在于,您传递的是被调用函数的返回值,而不是函数本身。
我以前也遇到过这个问题,下面是我想出的解决方案。
function funcRef($func){
return create_function('', "return call_user_func_array('{$func}', func_get_args());");
}
function foo($a, $b, $c){
return sprintf("A:%s B:%s C:%s", $a, $b, $c);
}
$b = funcRef("foo");
echo $b("hello", "world", 123);
//=> A:hello B:world C:123
发布于 2013-12-05 03:45:07
function func1(){
echo 'echo1 ';
return 'return1';
}
function func2($func){
echo 'echo2 ' . $func();
}
func2('func1');
结果:
echo1 echo2 return1
发布于 2013-03-08 23:20:52
在PHP 5.4.4 (没有测试过更低版本或其他版本)中,您可以完全按照您的建议执行操作。
以此为例:
function test ($func) {
$func('moo');
}
function aFunctionToPass ($str) {
echo $str;
}
test('aFunctionToPass');
该脚本将回显"moo“,就好像您直接调用了"aFunctionToPass”一样。
https://stackoverflow.com/questions/6475136
复制相似问题