Vamos a ver... tengo un problema con el nuevo metodo mágico de php __invoke.
El problema biene cuadno tengo una instancia de un objeto almacenada en una propiedad estática, por ejemplo
Código PHP:
class clase
{
public function __invoke()
{
$this->hola();
}
public function hola()
{
echo "hola";
}
}
class clase2
{
public static $instancia;
public function __construct()
{
self::$instancia=new clase;
}
public function prueba()
{
self::$instancia(); //ya que en clase tenemos definido el __invoke
}
}
sin embargo si que me funciona bien si hago una copia de la variable estatica $instancia en una variable local a la funcion prueba:
Código PHP:
public function prueba()
{
$i=self::$instancia;
$i(); //funciona
}
o si llamo directamente a el metodo hola()
Código PHP:
public function prueba()
{
self::$instancia->hola(); //SIN __invoke
}
los errores que me dan son un "notice: Undefined variable $instancia" y " Function name must be a string "
¿porque pasa esto?