如何将函数作为变量传递,然后使用该变量调用它?
e.g。
test(echo);
function test($function)
{
$function("Test");
}
答案 0 :(得分:6)
您只需将函数名称作为字符串传递即可。
但请注意,echo
不是一项功能,因此这不适用于echo
。
编辑:这是一个例子:
function my_function($x)
{
echo $x;
}
function test($function)
{
$function("Test");
}
test("my_function");
答案 1 :(得分:3)
您已与variable functions走在正确的轨道上。但是echo
是一种语言结构,而不是一种功能:
变量函数不适用于
echo()
,print()
,unset()
,isset()
,empty()
,include()
等语言结构,require()
等。利用包装函数将这些结构中的任何一个用作变量函数。
除此之外,该函数将通过其标识符传递:
test('function_name');
或者,如果使用anonymous functions,则按其值:
test(function() { /* … */ });
您还应该查看可用于测试给定参数是否可调用的is_callable
。
答案 2 :(得分:0)
对于像substr这样的函数,你可以调用一个值为“substr”的字符串:
$func = "substr";
$result = $func($string, 0, 10);
也可以使用Eval:
$func = "substr";
$result = eval("return $func(\$string, 0, 10);");
使用其中任何一种时都要小心。如果$ func来自用户输入,则恶意用户可以执行任何功能。如果您指定其他参数,PHP不会太在意(发出警告),例如,某人可以使用$ string等于“rm -rf /".
执行”exec“你不能用echo做这个,因为它不是一个函数;它是一种语言结构,如“if”或“while”。