4
如果我在另一个闭包中封闭闭包,我不能调用嵌套闭包。为什么不?我认为一个例子最能说明问题。无法调用封装中封装的封闭?
这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"; });
的失败消息是“致命错误:函数名必须是在线X file.php一个字符串”
谢谢!所以我需要将这些函数中的一个声明为“function()use($ func){$ func();}” –
是的,我正在为未来的读者离开。 –