Hola,
si tu problema es detinxis sobre cómo acceder a los atributos, esta es una solución:
class Usuario{
public function recuperar(){
// retornar los atributos del objeto instanciado
$r = array();
$r['nombre'] = $this->nombre;
$r['apellidos'] = $this->apellidos;
return $r;
}
}
class Alumno extends Usuario{
public $nombre;
public $apellidos;
}
$alumno = new Alumno;
$alumno->nombre = "pepito";
$alumno->apellidos = "perez";
$a = $alumno->recuperar();
var_dump($a);
el código es bastante limitado en el sentido de que habría que reescribirlo para cada clase, pero ilustra la forma de acceder a los atributos. Funciona porque Alumno
usa recuperar()
por herencia, y al ser $this
un Alumno, tiene acceso a sus atributos.
Una mejor solución es:
class Usuario{
public function recuperar(){
// retornar los atributos del objeto instanciado
$r = array();
foreach ($this as $k => $v){
$r[$k] = $v;
}
return $r;
}
}
class Alumno extends Usuario{
public $nombre;
public $apellidos;
}
$alumno = new Alumno;
$alumno->nombre = "pepito";
$alumno->apellidos = "perez";
$a = $alumno->recuperar();
var_dump($a);
Esta solución no requiere conocer qué atributos tiene el Objeto y aprovecha la capacidad de la construcción foreach
para recorrer elementos.
Saludos cordiales!
PD: otro tema sería tratar tu diseño, ya que en este simple ejemplo parece que estás haciendo clases por sus atributos (incorrecto) y no por sus métodos, que sería lo correcto.