gpt4 book ai didi

php - 不能调用包裹在闭包中的闭包?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:09:52 24 4
gpt4 key购买 nike

如果我将一个闭包包裹在另一个闭包中,我将无法调用嵌套的闭包。为什么不?我认为一个例子最能说明问题。

这段 PHP 代码:

function FInvoke($func) {
$func();
}

FInvoke(function () { echo "Direct Invoke Worked\n"; });

按预期工作并打印“Direct Invoke Worked”。

但是,如果我稍微修改它以添加另一个间接级别,它就会失败:

function FInvoke($func) {
$func();
}

function FIndirectInvoke($func) {
FInvoke(function () {
$func();
});
}

FIndirectInvoke(function () { echo "Never makes it here"; });

失败消息是“ fatal error :函数名必须是 file.php 中第 X 行的字符串”

最佳答案

您必须使用“use”关键字将 $func 传递给内部 lambda

function FInvoke($func) {
$func();
}

function FIndirectInvoke($func) {
FInvoke(function () use($func) { // <--- here
$func();
});
}

FIndirectInvoke(function () { echo "ok"; });

关于php - 不能调用包裹在闭包中的闭包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7618834/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com