匿名函数作为php中自定义函数的参数

时间:2018-10-27 10:54:04

标签: php parameters arguments anonymous-function custom-function

PHP中是否有一种方法可以在自定义函数的定义中调用匿名函数并将其作为参数传递?

我有这个功能

function foo( $message = function() {  
        return 'bar';
    }) {
    return $message;
}
echo foo();

这会产生错误:

  

致命错误:常量表达式包含无效运算符

语法错误还是没有办法?

1 个答案:

答案 0 :(得分:1)

来自PHP Documentation

  

默认值必须是一个常量表达式,而不是(例如)   变量,类成员或函数调用。 PHP也允许使用   数组和特殊类型NULL作为默认值

因此,基本上,您不能将可抛出(函数)设置为默认值。

相反,您可以尝试以下操作:

function foo( $message = null ) {

    // If using default value
    if (!isset($message)) {

        // You can now define your default anonymous function behaviour
        $return = function() { return 'bar';}; 
    }

    // Now, you can return the anonymous function handle
    return $return();
}
echo foo();

Rextester DEMO