【问题标题】:anonymous function as an argument to custom function in php匿名函数作为 php 中自定义函数的参数
【发布时间】:2019-03-31 22:45:49
【问题描述】:

PHP中有没有办法在自定义函数的定义中调用匿名函数并将其作为参数传递?

我有这个功能

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

这会产生错误:

致命错误:常量表达式包含无效操作

是语法错误还是没办法?

【问题讨论】:

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


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2012-10-01
      • 2018-08-16
      • 2019-11-23
      • 2011-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-06
      相关资源
      最近更新 更多