Is there any way to bind $this
to a closure that is passed as a parameter?
I read and reread everything I could find in manual or over the internet, but no one mentions this behaviour, except this blog post:
http://www.christophh.net/2011/10/26/closure-object-binding-in-php-54/
which mentions it but doesn't show how to do it.
So here's an example. When calling the get(function() {})
method I want the callback function that is passed to it was bound to the object i.e. bound to $this
, but unfortunately it doesn't work. Is there any way I can do it?
class APP
{
public $var = 25;
public function __construct() {
}
public function get($callback) {
if (!is_callable($callback)) {
throw new InvalidArgumentException('Paran must be callable.');
}
// $callback->bindTo($this);
$callback->bindTo($this, $this);
$callback();
}
}
$app = new APP();
$app->get(function() use ($app) {
echo '<pre>';
var_dump($app);
echo '<br />';
var_dump($this);
});
$app
works. $this
is NULL.