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

Como puedo acceder a una propiedad mediante una variable ?

Estas en el tema de Como puedo acceder a una propiedad mediante una variable ? en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buenas... necesito hacer esto: $objeto->{$field} ¿ se puede ? el tema es que el objeto me viene armado..y no puedo agregarle metodos magicos......entonces...?...
  #1 (permalink)  
Antiguo 16/07/2011, 14:07
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Como puedo acceder a una propiedad mediante una variable ?

Buenas... necesito hacer esto:

$objeto->{$field}

¿ se puede ? el tema es que el objeto me viene armado..y no puedo agregarle metodos magicos......entonces...?
__________________
Salu2!
  #2 (permalink)  
Antiguo 16/07/2011, 14:35
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Como puedo acceder a una propiedad mediante una variable ?

Usa los __get y/o __set para ello. Lo mejor es encapsulando, dejandolo como private y usar gettter y setter para poder trabajar con ello.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 16/07/2011, 14:45
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Como puedo acceder a una propiedad mediante una variable ?

Amigo Abi: el objeto me lo devuelve un ORM

No puedo agregarle metodos e incluso creo es tipo generico (std_class)

Sera que se puede con eval() ??? No se como hacerlo
__________________
Salu2!
  #4 (permalink)  
Antiguo 16/07/2011, 14:53
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Como puedo acceder a una propiedad mediante una variable ?

Y la clase no se puede extender ?, aunque si es un stdClass podes agregar propiedades dinamicamente, si haces:

Código PHP:
Ver original
  1. $object->$property = 'customValue'';
  2. echo $object->$property . PHP_EOL;

no te funciona ?
__________________
http://es.phptherightway.com/
thats us riders :)
  #5 (permalink)  
Antiguo 16/07/2011, 14:59
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Como puedo acceder a una propiedad mediante una variable ?

Cita:
Iniciado por masterpuppet Ver Mensaje
Y la clase no se puede extender ?, aunque si es un stdClass podes agregar propiedades dinamicamente, si haces:

Código PHP:
Ver original
  1. $object->$property = 'customValue'';
  2. echo $object->$property . PHP_EOL;

no te funciona ?
Interesante pero y eso como me permite listar una propiedad por un indice ? O como agrego el metodo get con eso ?
__________________
Salu2!
  #6 (permalink)  
Antiguo 16/07/2011, 15:29
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Como puedo acceder a una propiedad mediante una variable ?

Y en que momento has dicho que quieres acceder como indice o agregar un metodo ?, para agregar un metodo depende del ORM, cual estas utilizando ? Doctrine ? Propel ?.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #7 (permalink)  
Antiguo 16/07/2011, 16:21
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Como puedo acceder a una propiedad mediante una variable ?

Cita:
Iniciado por masterpuppet Ver Mensaje
Y en que momento has dicho que quieres acceder como indice o agregar un metodo ?
Cita:
Iniciado por Italico76 Ver Mensaje
Buenas... necesito hacer esto:

$objeto->{$field}

¿ se puede ? el tema es que el objeto me viene armado..y no puedo agregarle metodos magicos......entonces...?
Cita:
Iniciado por masterpuppet Ver Mensaje
para agregar un metodo depende del ORM, cual estas utilizando ? Doctrine ? Propel ?.
Uso Active Record de CI
__________________
Salu2!
  #8 (permalink)  
Antiguo 16/07/2011, 20:09
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Como puedo acceder a una propiedad mediante una variable ?

Y que te impide usar $record->{$field} = $value?

Saludos.
  #9 (permalink)  
Antiguo 16/07/2011, 20:18
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Como puedo acceder a una propiedad mediante una variable ?

Cita:
Iniciado por GatorV Ver Mensaje
Y que te impide usar $record->{$field} = $value?

Saludos.
GatorV...buenas!

Veo que me exprese super-mal..... y es que quiero poder LEER propiedades de un objeto que me es devuelto en una consulta de bases de datos.

Código PHP:
function input_value ($field,$userdata){
      return ((
$this->input->post('sent')=='sent') ? $this->input->post($field) : $userdata->$field);

La idea es no repetir el nombre de un campo en una comparacion donde es ademas indice en otro array... y para eso necesito leer la propiedad $field del objeto $userdata[0] en el codigo que coloqué.

Puedo leer directamente $userdata->$field ? quizas no me funciono por otra cosa....
__________________
Salu2!
  #10 (permalink)  
Antiguo 16/07/2011, 20:26
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Como puedo acceder a una propiedad mediante una variable ?

Puedes hacerlo así: $object->{$field};

Saludos.
  #11 (permalink)  
Antiguo 16/07/2011, 20:35
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Como puedo acceder a una propiedad mediante una variable ?

Genial...ni idea porque no me funcionaba
__________________
Salu2!

Etiquetas: acceder, general, propiedad, formulario
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:26.