Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Listar atributos de un objeto

Estas en el tema de Listar atributos de un objeto en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola gente. Existe algun método que liste la nómina de todos los atributos de un objeto en php? class A { private $atrib1; private $atrib2; ...
  #1 (permalink)  
Antiguo 22/06/2009, 20:17
Avatar de moron  
Fecha de Ingreso: mayo-2004
Mensajes: 972
Antigüedad: 20 años, 8 meses
Puntos: 2
Listar atributos de un objeto

Hola gente.

Existe algun método que liste la nómina de todos los atributos de un objeto en php?

class A
{
private $atrib1;
private $atrib2;
}

necesito que imprima atrib1, atrib2


muchas gracias desde ya
  #2 (permalink)  
Antiguo 22/06/2009, 20:42
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 20 años, 5 meses
Puntos: 102
Respuesta: Listar atributos de un objeto

www.php.net/reflection
Código php:
Ver original
  1. class A
  2. {
  3.     private $atrib1;
  4.     private $atrib2;
  5. }
  6.  
  7.  
  8. $reflectionClass = new ReflectionClass('A');
  9. foreach ($reflectionClass->getDefaultProperties() as $property => $value) {
  10.     echo $property . ' => ' . $value . "\n";
  11. }

¿Puede ser? ...

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #3 (permalink)  
Antiguo 23/06/2009, 09:43
Avatar de moron  
Fecha de Ingreso: mayo-2004
Mensajes: 972
Antigüedad: 20 años, 8 meses
Puntos: 2
Respuesta: Listar atributos de un objeto

Hola gracias por la respuesta, lo resolví con get_class_vars.

saludos
  #4 (permalink)  
Antiguo 23/06/2009, 11:09
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 20 años, 5 meses
Puntos: 102
Respuesta: Listar atributos de un objeto

Má que cosa ... pensé que get_class_vars() solo mostraba propiedades públicas, tú, en tu clase, solo muestras propiedades privadas

Bueno que lo solucionaste, lástima que no muestres cómo para a quien le pueda servir.

Un saludo
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #5 (permalink)  
Antiguo 23/06/2009, 11:18
Avatar de moron  
Fecha de Ingreso: mayo-2004
Mensajes: 972
Antigüedad: 20 años, 8 meses
Puntos: 2
Respuesta: Listar atributos de un objeto

En realidad puede que sea asi, yo creé un método dentro de la clase que devuelve los atributos de si mismo. Y estos son privados.


<?
class A
{

private $j

public function dameLosAtributos()
{
return get_class_vars("A")
}

al menos a mi asi me sirvió.

Saludos y Muchas gracias
  #6 (permalink)  
Antiguo 23/06/2009, 11:38
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 7 meses
Puntos: 2135
Respuesta: Listar atributos de un objeto

En efecto a partir de PHP 5.0.3 si get_class_vars es llamado dentro de la misma clase te devuelve todas las propiedades, publicas, privadas y protegidas, es un buen cambio creo ya que te evita usar el API de Reflection que es un poco pesado.

Saludos
  #7 (permalink)  
Antiguo 23/06/2009, 12:06
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 20 años, 5 meses
Puntos: 102
Respuesta: Listar atributos de un objeto

Oh, mira ... gracias por compartirlo . En definitiva, mucho mejor.

Creo igual puedes usar la constante __CLASS__ para generalizar el código.

Código php:
Ver original
  1. <?
  2. class A
  3. {
  4.     private $j
  5.  
  6.     public function dameLosAtributos()
  7.     {
  8.         return get_class_vars(__CLASS__);
  9.     }
  10. }

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:46.