Ver Mensaje Individual
  #3 (permalink)  
Antiguo 18/01/2006, 14:41
Avatar de jahepi
jahepi
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Querétaro
Mensajes: 1.124
Antigüedad: 19 años, 5 meses
Puntos: 43
Cita:
Iniciado por NTrance
La clase que hereda la he puesto así:

Código PHP:
class extends {

  function 
joke() {
   
parent::joke();    
   
$this->44;
   print 
"B::joke " $this->"<br>\n";
  }

Hola Ntrance!

Entonces quedaría así:

Código PHP:
class {
  var 
$x;

  function 
A() {
   
$this->32;
  }

  function 
joke() {
   print 
"A::joke " $this->"<br>\n"
  }
}

class 
extends {
  var 
$x;

  function 
B() {
   
parent::A();
   
//$this->x = 44;
  
}

  function 
joke() {
   
parent::joke();    
   
$this->44;
   print 
"B::joke " $this->"<br>\n";
    }
  }
}

$obj = new B();
$obj->joke(); 
Pero eso no creo que resuelva el problema porque primero llamas el método padre mucho antes de definir la propiedad hija, dando como resultado el valor 32, pero por ejemplo si vuelvo a llamar al método padre justo después de definir la propiedad hija sale el mismo resultado, mira:

Código PHP:
class {
  var 
$x;

  function 
A() {
   
$this->32;
  }

  function 
joke() {
   print 
"A::joke " $this->"<br>\n"
  }
}

class 
extends {
  var 
$x;

  function 
B() {
   
parent::A();
   
//$this->x = 44;
  
}

  function 
joke() {
   
parent::joke();    
   
$this->44;
   
//Aquí esta la llamada al método padre de nuevo...
   
parent::joke();  
   print 
"B::joke " $this->"<br>\n";
    }
  }
}

$obj = new B();
$obj->joke(); 
Daría como resultado:

A::joke32
A::joke44
B::joke 44


Como puedes ver no puedo tener acceso al miembro padre sobreescrito en la clase hija.

Suerte!