fare un esempio forzato dove voglio chiamare un metodo protected static
da un altro contesto attraverso una funzione di callback:Utilizzo di "self" in un callback anonimo?
class Foo {
protected static function toBeCalled() { }
public static function bar() {
functionThatAcceptsACallback(function() {
self::toBeCalled();
});
}
}
Questo è possibile in PHP 5.3? Non sono riuscito a trovare un modo per farlo funzionare ...
Hai provato a passarlo come qualsiasi altra variabile esterna con 'use'? 'function() usa (& self) {...}' potrebbe essere necessario associarlo a un'altra variabile piuttosto che usare la parola chiave. – Orbling
@Orbling Questo è il problema, è una * parola chiave *, non una variabile. Se è usato in una forma diversa da 'self :: methodName' è riconosciuto come costante. (Vai PHP! (ー _ ー ;;)) – deceze
La mia comprensione è che le funzioni anonime hanno il loro scopo e non hanno accesso a nulla al di fuori tranne tramite l'uso. Tuttavia, sulla [documentazione] (http://php.net/manual/en/functions.anonymous.php), si dice che dalla v5.4.0 + '$ this' ora funziona all'interno di una chiusura, quindi forse' self' fa anche su quella versione. – Orbling