显然 $pid 超出了这里的范围。难道它不应该与函数一起“关闭”吗?我相当确定这就是闭包在 javascript 中的工作原理。
根据一些文章php 闭包被破坏,所以我无法访问this?
那么怎样才能$pid可以从这个闭包函数访问吗?
class MyClass {
static function getHdvdsCol($pid) {
$col = new PointColumn();
$col->key = $pid;
$col->parser = function($row) {
print $pid; // Undefined variable: pid
};
return $col;
}
}
$func = MyClass::getHdvdsCol(45);
call_user_func($func, $row);
Edit我已经通过使用解决了这个问题:$col->parser = function($row) use($pid)
。不过我觉得这很丑。
您需要指定应以这种方式关闭哪些变量:
function($row) use ($pid) { ... }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)