C'è un modo per associare $this
a una chiusura passata come parametro? Ho letto e riletto tutto quello che ho trovato in manuale o su Internet, ma nessuno menziona questo comportamento, tranne questo post sul blog: http://www.christophh.net/2011/10/26/closure-object-binding-in-php-54/ che lo menziona ma non mostra come farlo.
Quindi, ecco un esempio. Quando si chiama il metodo get(function() {})
, desidero che la funzione di callback passata sia associata all'oggetto associato a $this
, ma sfortunatamente non funziona. C'è un modo per farlo?
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
opere. $this
è NULL.
Dannazione! Grazie mille Guilherme!Ho provato Closure :: bind, ma non sapevo che sarebbe stato il valore di ritorno che avrei dovuto chiamare dopo. –
@ unknown.bird Prego. :) –
E in una riga '$ callback-> bindTo ($ this) -> __ invoke();' :) –