tomar un ejemplo artificial donde quiero llamar a un método protected static
de otro contexto a través de una función de devolución de llamada:¿Está utilizando 'self' en una devolución de llamada anónima?
class Foo {
protected static function toBeCalled() { }
public static function bar() {
functionThatAcceptsACallback(function() {
self::toBeCalled();
});
}
}
Es esto posible en PHP 5.3? No he podido encontrar una manera de hacer que funcione ...
Ha intentado pasar como cualquier otra variable externa con 'use'? 'function() use (& self) {...}' puede necesitar vincularlo a otra variable en lugar de usar la palabra clave. – Orbling
@Orbling Ese es el problema, es una * palabra clave *, no una variable. Si se usa en cualquier forma que no sea 'self :: methodName', se reconoce como una constante. (Vaya PHP! (ー _ ー ;;)) – deceze
Según tengo entendido, las funciones anónimas tienen su propio alcance y no tienen acceso a nada externo, excepto a través del uso. Sin embargo, en la [documentación] (http://php.net/manual/en/functions.anonymous.php), dice que a partir de v5.4.0 + '$ this' ahora funciona dentro de un cierre, por lo que tal vez' self' también lo hace en esa versión. – Orbling