是這樣沒錯,之前是一陣子都在學javascript,一直覺得php的closure很怪XD
還有一點是closure中的$this在php5.3版本是不支援的,會出錯,5.4以後才支援,至於$this是不是都表示object本身還是有一些奇特方法會造成其context改變,例如:
<?php
class A {
public $value = "A";
function getClosure() {
return function() {
echo $this->value, "\n";
};
}
}
class B {
public $value = "B";
}
$a = new A();
$b = new B();
call_user_func($a->getClosure()); // 顯示 A
call_user_func($a->getClosure()->bindTo($b, $b)); // 顯示 B
bindTo
會改變closure
的context