PHP:使用匿名函数

时间:2015-05-05 10:06:46

标签: php function anonymous-function

我想用动态名称创建全局函数,但我不想将函数代码编写为字符串,因为它在PHP文档中需要create_function函数。

梦境将如下:

$functionName = "new_super_function";
$functionBody = function($a,$b) { return $a + $b; };

if ( !function_exists($functionName) ) create_function($functionName, $functionBody);

//from here my function with dynamic name is ready
//I could now call it like call_user_func($functionName, 5, 7) => 12
//or just use it later like new_super_function(5,7) => 12

我一直在寻找这种可能性,但我找不到任何东西。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

只需将函数体指定为函数名称,如下所示:

$functionName = "new_super_function";
$functionBody = function($a,$b) { return $a + $b; };

if (!function_exists($functionName))
    $functionName = $functionBody;

echo call_user_func($functionName, 5, 7);  //Same as: echo $functionName(5, 7);

输出:

12

修改

如果你想声明一个你也可以在其他函数中调用的匿名函数,这是不可能的,因为它被赋值给一个变量并且变量在一个作用域中,所以你要么必须传递变量使用匿名函数作为参数或使用global关键字。