entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

recuperar atributos de objeto instanciado, php, poo

Saludos como logro hacer lo siguiente

class Usuario{
        public function recuperar(){
        // retornar los atributos del objeto instanciado
        }
}
class Alumno extends Usuario{
         public $nombre;
         public $apellidos
}
$alumno = new Alumno;
$alumno->nombre = "pepito";
$alumno->apellidos = "perez";
echo $alumno->recuperar();
// recuperar un array de atributos con sus valores, ejemplo [nombre : "pepito", apellidos : "perez"]

1 Respuesta

1voto

Leonardo-Tadei Puntos227320

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.

0voto

Leonardo-Tadei comentado

Hola @elviscastro ,

te sirvió la respuesta sobre cómo recorrer atributos de un Objeto?

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta