Tema: Bug
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/08/2007, 05:49
gnfrs
 
Fecha de Ingreso: abril-2004
Ubicación: Rosario, Argentina
Mensajes: 124
Antigüedad: 20 años, 11 meses
Puntos: 11
Bug

Código:
class a {
    var $variable;
    
   function estatica() {
      if (isset($this)) {
         return $this->otra();
      }
   }
    
   function otra() {
      return 'Hola mundo.';
   }
}

class b {
    
   function instanciada() {
      return a::estatica();
   }
}

$b = new b();
echo $b->instanciada();

El código de arriba es para PHP4, sé que muchos dirán "pasate a PHP5" pero igual veamos esto.

El código instancia una clase "b" y llama a un método de esta clase, ese método llama de forma estática a un método de la clase "a", dicho método hace una llamada a función a otro método usando una referencia $this... Obviamente esto no funcionaría porque el objeto no ha sido instanciado ($this no debería existir), pero curiosamente PHP4 encuentra instanciada la variable $this pero al hace la llamada a función
return $this->otra(); se genera el siguiente error:

Fatal error: Call to undefined function: otra() in PHPDocument1 on line 9.


Aparentemente no encuentra el método otra() en la clase "b", dado a que $this está haciendo referencia al objeto instanciado $b........