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();}」 –
是的,我正在爲未來的讀者離開。 –