顯然$ 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