PHP调用函数

时间:2010-10-03 12:54:21

标签: php functional-programming

如何将函数作为变量传递,然后使用该变量调用它?

e.g。

test(echo);
function test($function)
{
    $function("Test");
}

3 个答案:

答案 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”。