PHP调用函数

PHP调用函数,php,functional-programming,Php,Functional Programming,如何将函数作为变量传递,然后使用该变量调用它 e、 g 您只需将函数名作为字符串传递即可 但是请注意,echo不是一个函数,因此这不适用于echo 编辑:以下是一个示例: function my_function($x) { echo $x; } function test($function) { $function("Test"); } test("my_function"); 你已经走上了正确的道路。但是echo是一种语言结构,而不是一种函数: 变量函数不能与诸如echo

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

e、 g


您只需将函数名作为字符串传递即可

但是请注意,
echo
不是一个函数,因此这不适用于
echo

编辑:以下是一个示例:

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

你已经走上了正确的道路。但是
echo
是一种语言结构,而不是一种函数:

变量函数不能与诸如
echo()
print()
unset()
isset()
empty()
include()
require()
等语言构造一起使用。利用包装函数将这些结构中的任何一个用作变量函数

除此之外,函数将通过其标识符传递:

test('function_name');
或者,在使用的情况下,根据其价值:

test(function() { /* … */ });

您还应该查看可用于测试给定参数是否可调用的函数。

对于类似substr的函数,您可以调用值为“substr”的字符串:

Eval也可用于:

$func = "substr";
$result = eval("return $func(\$string, 0, 10);");
使用这两种工具时,请小心操作。如果$func来自用户输入,则恶意用户可以执行任何函数。由于PHP不太关心(发出警告)您是否指定了其他参数,例如,有人可以使用等于“rm-rf/”的$string执行“exec”

echo不能这样做,因为它不是一个函数;它是一种语言结构,像“如果”或“当”

$func = "substr";
$result = $func($string, 0, 10);
$func = "substr";
$result = eval("return $func(\$string, 0, 10);");