Comunidad PHPeros

Lenguajes => PHP => (POO) Programación Orientada a Objetos => Mensaje iniciado por: Focux en 19 de Febrero de 2011, 22:43:48 pm

Título: [TUTORIAL] Serializando un objeto.
Publicado por: Focux en 19 de Febrero de 2011, 22:43:48 pm
Hace mucho que no tenía tiempo para hacer tutoriales, pero aquí estoy de nuevo. Hoy les voy a hablar sobre la serialización de objetos, para eso lo voy a explicar utilizando MySQLi, lo que hace serializar es crear representaciones de textos de algún objeto o array para luego poder invertir su proceso y volver utilizarlo.

Lo primero que haremos es, inicializar el objeto de nuestra clase, en mi caso usare MySQLi, cabe resaltar que si vamos a serializar una conexión, debemos crear una conexión persistente, para hacerla en esta libreria debemos poner una p que anteceda al nombre del host.

Citar
<?PHP
$conexionBD = new mysqli('phost', 'user', 'pass', 'db');
$guardarConexion = serialize($conexionBD);
$guardarConexion = urlencode($guardarConexion);
echo '<a href="recibirSerializacion.php?datos='.$guardarConexion.'">';
?>

En este caso, yo envie la serializacion por una url pero podemos hacerla de cualquier manera siempre y cuando podamos leerla para unserializarla. Ahora vamos a hacer lo siguiente para unserializarla:
Citar
<?PHP
$unSerializar = stripslashes($_GET['datos']);
$unSerializar = urldecode($unSerializar);
$unSerializar = unserialize($unSerializar);
$unSerializar->query("ALGO");
?>

Ya podemos trabajar con nuestro objeto, pero por si acaso lo hacemos con un objeto de una clase propia debemos incluir el archivo de nuestra clase. Muchas veces si es algo que vamos a estar utilizando mucho lo idóneo sería crear una session y guardarlo ahi o hacerlo mediante un archivo, en este caso lo hicimos por url, tambien recuerden que podemos hacerlo con un array.

Espero que le haya gustado este tutorial y bueno lo importante es que aprendan, porque para eso estamos aquí. :-[

Título: Re:[TUTORIAL] Serializando un objeto.
Publicado por: CarlosRdrz en 20 de Febrero de 2011, 01:24:17 am
Curioso. No conocía el método jeje

Buen tutorial :)

Saludos
Título: Re:[TUTORIAL] Serializando un objeto.
Publicado por: Warlox en 20 de Febrero de 2011, 03:39:16 am
Perdona mi ignorancia; pero no lo termino de entender :(
Título: Re:[TUTORIAL] Serializando un objeto.
Publicado por: Physlet en 20 de Febrero de 2011, 04:06:07 am
Interesante, desconocía esto de serializar. Gracias por el aporte.
Título: Re:[TUTORIAL] Serializando un objeto.
Publicado por: -Pituko- en 20 de Febrero de 2011, 15:21:40 pm
Digo lo mismo que Physlet...
Título: Re:[TUTORIAL] Serializando un objeto.
Publicado por: Focux en 23 de Febrero de 2011, 22:11:35 pm
Gracias por sus opiniones(:
Perdona mi ignorancia; pero no lo termino de entender :(
En cuanto me baje el xampp, que en eso estoy, te explico mejor, porque ahora mismo no tengo ningun host y con eso te podria explicar mejor.
Título: Re:[TUTORIAL] Serializando un objeto.
Publicado por: Focux en 23 de Febrero de 2011, 22:57:36 pm
ok, ya lo baje. Supongamos que queremos serializar un array, aunque si queremos serializar un array recomiendo mejor http_build_query, pero para que entiendas te explicare con esto, supongamos que tenemos este codigo:
Citar
<?PHP
$conexionBD = array("Hola", ";o", "shit", "eoeo");
$guardarConexion = serialize($conexionBD);
$guardarConexion = urlencode($guardarConexion);
echo '<a href="recibirSerializacion.php?datos='.$guardarConexion.'">xd</a>';
?>

El codigo anterior imprimira el siguiente link:
Citar
con urlencode
recibirSerializacion.php?datos=a%3A4%3A%7Bi%3A0%3Bs%3A4%3A%22Hola%22%3Bi%3A1%3Bs%3A2%3A%22%3Bo%22%3Bi%3A2%3Bs%3A4%3A%22shit%22%3Bi%3A3%3Bs%3A4%3A%22eoeo%22%3B%7D

sin urlencode
recibirSerializacion.php?datos=a:4:{i:0;s:4:"Hola";i:1;s:2:";o";i:2;s:4:"shit";i:3;s:4:"eoeo";} a:4(i:o;s:4:"Hola";i:1;

El codigo de arriba sería como un array comprimido, luego cuando lo queramos usar lo unico que tenemos que hacer es unserializarlo y en caso de que hallamos aplicado urlencode aplicarle la inversa que es urldecode, luego de esto tendremos nuestro array igual como lo dejamos en la pagina anterior.
Título: Re:[TUTORIAL] Serializando un objeto.
Publicado por: Physlet en 12 de Marzo de 2011, 08:14:49 am
Muchísimas gracias Focux, si no fuera por este post no hubiera conocido esta excelente técnica y me hubiera roto mucho la cabeza buscando una solución para una problemática de un proyecto que tengo. Lo he usado para pasar un arreglo vía post, en serio gracias :D
Título: Re:[TUTORIAL] Serializando un objeto.
Publicado por: Focux en 12 de Marzo de 2011, 15:22:05 pm
De nada, para eso estamos, si supieras de todos los que me ha ayudado a resolver está función.
Título: Re:[TUTORIAL] Serializando un objeto.
Publicado por: JuLiAnChz en 30 de Agosto de 2013, 15:42:59 pm
Hola buen dia,

Disculpen... pero si no pregunto no aprendo, esto de serializar me serviria para que exactamente osea en que me ayudaria y por que?...

Muchas Gracias!
Título: Re:[TUTORIAL] Serializando un objeto.
Publicado por: SoyJoaquin. en 30 de Agosto de 2013, 16:25:59 pm
Hola buen dia,

Disculpen... pero si no pregunto no aprendo, esto de serializar me serviria para que exactamente osea en que me ayudaria y por que?...

Muchas Gracias!
En el lenguaje mas coloquial: Es convertir un objeto en una cadena legible para después poder ser decodificada usando unserialize();

Un ejemplo básico: Guardar un array en una base de datos, aplicamos serialize();, cuando lo extraemos, aplicamos unserialize(); y este nos devolverá el objeto (El array) para poderlo utilizar en nuestro código.
Saludos.
Título: Re:[TUTORIAL] Serializando un objeto.
Publicado por: JuLiAnChz en 03 de Septiembre de 2013, 17:31:36 pm
En el lenguaje mas coloquial: Es convertir un objeto en una cadena legible para después poder ser decodificada usando unserialize();

Un ejemplo básico: Guardar un array en una base de datos, aplicamos serialize();, cuando lo extraemos, aplicamos unserialize(); y este nos devolverá el objeto (El array) para poderlo utilizar en nuestro código.
Saludos.

Muchas gracias!, es decir que con esto puedo guardar una array codificada en la base de datos y luego exportarla y volverla otra vez array (decode) :D
Título: Re:[TUTORIAL] Serializando un objeto.
Publicado por: Void en 11 de Octubre de 2013, 10:23:51 am
Que método interesante.
No sabía que algo así existía, muchas gracias por compartirlo.