【发布时间】:2011-09-26 11:17:25
【问题描述】:
显然 $pid 超出了这里的范围。它不应该与功能一起“关闭”吗?例如,我很确定这就是闭包在 javascript 中的工作方式。
根据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 中的工作方式
-
在 php 中就是这样......
-
这是一种丑陋的语言,但我坚持使用它。 :(
-
一天比一天丑。 (:
-
从 PHP 5.4 开始,您可以在闭包内访问
$this。