
10/09/2008, 04:20
|
 | | | Fecha de Ingreso: agosto-2008
Mensajes: 121
Antigüedad: 16 años, 6 meses Puntos: 1 | |
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 ;) |