Ver Mensaje Individual
  #10 (permalink)  
Antiguo 10/09/2008, 04:20
Avatar de anlhp
anlhp
 
Fecha de Ingreso: agosto-2008
Mensajes: 121
Antigüedad: 15 años, 8 meses
Puntos: 1
Exclamación Respuesta: PHP y su curiosa manera de manejar la herencia

bien señores, una vez mas, parece ser que soy algun tipo de mesías de los constructores o algo :D , si existen los constructores, es por algo.
Al emplear lo siguiente:

class Dad {

private $className = "Dad";

public function getClassName() {
return $this->className;
}

}

class Child extends Dad {

private $className = "Child";

}

$dad = new Dad();
$child = new Child(),

echo "dad: " . $dad->getClassName() . "<br>"; // --> Dad
echo "child : " . $child ->getClassName() . "<br>"; // ---> Dad

pues bien, rapido que tengo que trabajar jejeje,esta claro pensar en primera instancia que algo esta mal, pues heredo un metodo que que tiene que devolver el nombre de mi clase, pero sucede que en nuestra querida clase estamos creando una variable exactamente igual y no estamos sobrecargando el metodo, por lo que php nota cierta ambiguedad en las variables y al final termina devolviendonos la variable de la clase en la que se define el metodo, por tanto señores, para evitar esta 'ambiguedad' utilicemos los constructores y protected que pa eso estan:

class Dad {

protected $className = "Dad";

public function __construct(){
$this->className = 'Dad;
}
public function getClassName() {
return $this->className;
}

}

class Child extends Dad {

public function __construct(){
$this->className = 'Child;
}

}

$dad = new Dad();
$child = new Child(),

echo "dad: " . $dad->getClassName() . "<br>"; // --> Dad
echo "child : " . $child ->getClassName() . "<br>"; // ---> Child

debe funcionar, no lo he probado, como dije, eo trabajo me llama, suerte ;)