$this
はそのまま use
で渡せないので、 $that = $this;
みたいなことをする。どっかのスクリプト言語で見たような・・・。
<?php
class Foo
{
public function getClosure()
{
$that = $this;
$closure = function() use ($that) {
$that->bar();
};
return $closure;
}
public function bar()
{
echo 'Called bar method.', PHP_EOL;
}
}
$foo = new Foo();
$closure = $foo->getClosure();
$closure(); // Called bar method.