如果我将一个闭包包装在另一个闭包中,我就无法调用嵌套的闭包。为什么呢?我认为示例可以最好地说明问题。
这是PHP代码:
失败信息是“致命错误:文件.php第X行的函数名必须是字符串”。
这是PHP代码:
function FInvoke($func) {
$func();
}
FInvoke(function () { echo "Direct Invoke Worked\n"; });
正常工作,打印“直接调用起作用”。
然而,如果我稍微修改一下,添加另一个间接级别,它就会失败:
function FInvoke($func) {
$func();
}
function FIndirectInvoke($func) {
FInvoke(function () {
$func();
});
}
FIndirectInvoke(function () { echo "Never makes it here"; });
失败信息是“致命错误:文件.php第X行的函数名必须是字符串”。