与JS一起工作我已经开始喜欢闭包,所以我很高兴知道PHP中也有闭包.但是我无法让这些东西工作,这段代码有什么问题?
class Foo {
public $Bar;
public function Foo() {
$this->Bar = function() { echo "Hello World"; };
}
};
$F = new Foo();
$F->Bar();
Run Code Online (Sandbox Code Playgroud)
我一直在收到PHP Fatal error: Call to undefined method Foo::Bar()错误.
这已经在SO上进行了很多讨论(参见例如这个答案).这应该做的伎俩:
$b = $f->Bar;
$b();
Run Code Online (Sandbox Code Playgroud)
是的,这是愚蠢的.您可以使用call_user_func()一行(请参阅jlb对此问题的回答),但丑陋仍然存在.