Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/06/2011, 05:53
ivan_teruel92
 
Fecha de Ingreso: agosto-2010
Mensajes: 40
Antigüedad: 14 años, 4 meses
Puntos: 2
__invoke e instancias de objetos estáticos

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?