[英]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.