[Resuelto] PHP toJSON a una clase que extiende de otra.

Iniciado por Pablo Videla, 9 Septiembre 2015, 16:51 PM

0 Miembros y 2 Visitantes están viendo este tema.

MinusFour

#10
Cita de: Pablo Videla en  9 Septiembre 2015, 19:43 PM
Hice lo que me dijiste

Código (php) [Seleccionar]
$properties = get_class_vars(get_class());

y puse en el constructor de persona

Código (php) [Seleccionar]
public function __construct() {
     $this->idPersona = '';
     $this->strNombres = '';
     $this->strApellidoPaterno = '';
     $this->strApellidoMaterno = '';
     $this->strRut = '';
     $this->strDv = '';
     $this->Empresa = '';
     $this->strImagenPersona = '';
   }


Pero ahora solo me arroja el nombre de la clase sin las propiedades, y ojo que seteo las propiedades como corresponde, con los setter y todo lo que eso significa.



No necesitas usar get_class_vars una vez que moviste eso al constructor. Usas lo que hiciste al principio:

Código (php) [Seleccionar]
$properties = $this->getProperties();

Ahh y no me habia dado cuenta de otra cosa, las propiedades de la clase padre son private, es por eso que quizas no puedas verlas con get_class_vars.

Pablo Videla

#11
Cita de: MinusFour en  9 Septiembre 2015, 19:53 PM
No necesitas usar get_class_vars una vez que moviste eso al constructor. Usas lo que hiciste al principio:

Código (php) [Seleccionar]
$properties = $this->getProperties();

Ahh y no me habia dado cuenta de otra cosa, las propiedades de la clase padre son private, es por eso que quizas no puedas verlas con get_class_vars.

Los atributos tienen que ser privados, para eso estan los getters. E hice lo que me dijiste en el constructor pero no tiene ningun efecto.




Encontre la solucion!  :D :D :D

Código (php) [Seleccionar]
        $properties = array_merge(parent::getProperties(),$this->getProperties());



Mod: No hacer doble post

MinusFour

Si, una opción valida. Aunque sin duda pone en cuestión el uso de private en tu clase. A lo mejor con protected puedes obtener los valores de la clase padre con una sola llamada a get_object_vars.

Pablo Videla

#13
Cita de: MinusFour en  9 Septiembre 2015, 20:16 PM
Si, una opción valida. Aunque sin duda pone en cuestión el uso de private en tu clase. A lo mejor con protected puedes obtener los valores de la clase padre con una sola llamada a get_object_vars.
Buen punto, definitivamente deberìa ser protected los atributos de la clase padre. (Como dije al principio, php me ha hecho mal XD)




Perfecto MinusFour, con protected bastaba y sobraba pense al principio que querias que dejara como public los atributos por eso lo descarte altiro, pero con protected funciona perfecto. Algo basico en herencia y se me habia olvidado. Muchas gracias por la ayuda a todos!.

Mod: No hacer doble post