Sto provando a fare riferimento a una variabile privata di un oggetto all'interno di una chiusura. Il codice sotto sembra funzionare, ma si lamenta Fatal error: Cannot access self:: when no class scope is active in test.php on line 12
e Fatal error: Using $this when not in object context in test.php on line 20
.Accesso a variabili private da una chiusura
Qualsiasi idea su come ottenere gli stessi risultati utilizzando una chiusura mantenendo le variabili private e senza fare funzioni di supporto (annullando l'intera idea di una variabile privata).
class MyClass
{
static private $_var1;
private $_var2;
static function setVar1($value)
{
$closure = function() use ($value) {
self::$_var1 = $value;
};
$closure();
}
function setVar2($value)
{
$closure = function() use ($value) {
$this->_var2 = $value;
};
$closure();
}
}
MyClass::setVar1("hello"); //doesn't work
$myclass = new MyClass;
$myclass->setVar2("hello"); //doesn't work
Eh - copycat ;-) – DMI
@ Dave in realtà stavo scrivendo prima ho letto la tua risposta. Ad ogni modo, +1 per te come soluzione: p – Artefacto
Heh. Rapido sviluppo parallelo. Grazie per il +1, e restituito in natura, come si mette molto più impegno in me! :-) – DMI