繁体   English   中英

如何指定默认函数参数(PHP中的函数)?

[英]How to specify default function parameter which is a function in PHP?

我想知道如何指定参数的默认值,该参数应该是函数? 我试图通过以下函数关闭来做到这一点:

function foo($func = function(){}) {
    $func();
}

function bar() {
    $this->foo(); // Default parameter is supposed to be here

    $this->foo(function(){
        echo("non default func param");
    });
}

导致消息语法错误

“不允许将表达式作为参数默认值”。

解决该问题的一种方法是将默认参数设置为null ,然后检查该参数是否实际上为null-如果是,则定义要使用的“默认”函数。

然后检查该参数是否可调用-如果它不可调用,请引发异常-否则,请调用该函数!

function foo($func = null) {
    // If $func is null, use default function
    if ($func === null) {
        $func = function() {
            echo "Default!\n";
        };
    }
    // Verify that whatever parameter was supplied is a valid closure
    if (!is_callable($func)) {
        throw new Exception('Invalid parameter supplied');
    }
    // Call the function!
    $func();
}

function bar() {
    foo(); // Default parameter is supposed to be here

    foo(function(){
        echo "Non default func param \n";
    });
}

bar();

以上的输出将是

默认!
非默认func参数

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM