Comunidad PHPeros
Lenguajes => PHP => (POO) Programación Orientada a Objetos => Mensaje iniciado 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.
<?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:
<?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í. :-[
-
Curioso. No conocía el método jeje
Buen tutorial :)
Saludos
-
Perdona mi ignorancia; pero no lo termino de entender :(
-
Interesante, desconocía esto de serializar. Gracias por el aporte.
-
Digo lo mismo que Physlet...
-
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.
-
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:
<?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: 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.
-
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
-
De nada, para eso estamos, si supieras de todos los que me ha ayudado a resolver está función.
-
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!
-
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.
-
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
-
Que método interesante.
No sabía que algo así existía, muchas gracias por compartirlo.