显然$ pid超出了范围。该功能不应该“关闭”吗?我相当确定这是JavaScript中的闭包工作方式。PHP关闭范围问题
根据一些文章php closures are broken,所以我不能访问这个?
那么如何从这个闭包函数中访问$ 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);
编辑我周围有得到与使用:$col->parser = function($row) use($pid)
。不过我觉得这很丑陋。
这不是丑,是封闭在PHP中是如何工作的 – zerkms
这就是它如何在PHP中如此.. – tradyblix
这是一种丑陋的语言,但我坚持下去。 :( – Keyo