Serializar Objetos en PHP

Esta entrada la hago para responderme una pregunta a me mesmo😀

Resulta que en un sistema que estoy haciendo tengo info guardada en objetos y hasta ahora no había tenido la necesidad de enviarla a JavaScript, simplemente las usaba desde PHP.

Entonces, tengo algo así:

/* PAPI DE USUARIO Y FUNCIONARIO */
class Persona {
    protected $ID, $Nombre, $Paterno, $Materno, $Nacimiento, $Sexo, $Direccion, $Comuna, $Fono, $Email;
}

class Usuario extends Persona {
    private $Prevision, $Cesfam, $Extranjero, $Acompanante, $RelacionAcompanante, $Patologias, $Alergias, $Ges;

    function Usuario(){ /* TODAS LA VARIABLES PARA INICIAR */}

    /* GETTERS y SETTERS */
} 

Y necesitaba mandar esta info a JavaScript para mostrarla en un formulario, por lo que utilicé el conocido json_encode y le mandé mi variable usuario de tipo Persona . Como respuesta tuve … nada😯 Nada de otro mundo, considerando que mi clase tiene los atributos ocultos y no puedo acceder a ellos.

Una solución era crear un método de entrega de datos, pero significaba tener que crear un array nuevo con mis datos, siendo que ya los tenía listos…

Y fue así como llegué a la interfaz JsonSerializable😀 Entonces, la agregamos a nuestra clase

class Usuario extends Persona implements JsonSerializable{

    private $Prevision, $Cesfam, $Extranjero, $Acompanante, $RelacionAcompanante, $Patologias, $Alergias, $Ges;

    function Usuario(){ /* TODAS LA VARIABLES PARA INICIAR */}

    /* GETTERS y SETTERS */

    public function jsonSerialize(){ return get_object_vars($this); }
}

Ojo que la función tiene que ser pública, ya que la función jsonSerialize() está definida como abstract public.

Lo que hace es tomar nuestro objeto y convertirlo en un array, todo listo para el encode.

echo json_encode($usuario->jsonSerialize());

Y eso es todo😉 tienen listo el json con la data que necesitan😉

Info:

Acerca de MaritoCares

Ingeniero Informático. Con tendencias a la programación en [C#, VB].NET, Java(Web principalmente...), PHP, JavaScript, algo mínimo de [ruby, python], y el clásico C.
Esta entrada fue publicada en php, Tutoriales. Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s