La serialización es el proceso por el cual pasamos a un formato serie los elementos complejos de PHP. Estos elementos pueden ser Array u Objetos que reúnan un cierto conjunto de características y datos que interesa almacenar en una base de datos o fichero. También, puede interesar, pasarlo vía URL a otra u otras páginas. Las instrucciones que se usan son: serialize() para serializar y unserialize() retornar el elemento a su estado natural.
Sin este proceso la tarea definida anteriormente se antoja complicado poderlo implementar. Serializar por tanto convierte todo el contenido de un objeto o matriz en una cadena de caracteres. Esto podemos verlo en el siguiente ejemplo.
Serialización de un objeto
<!DOCTYPE html> <html lang="es"> <head> <metacharset="UTF-8"> <metahttp-equiv="X-UA-Compatible"content="IE=edge"> <metaname="viewport"content="width=device-width, initial-scale=1.0"> <title>Serializar variables y objetos</title> </head> <body> <?php //definimos la clase siguiente que engloba los campos sobre las características de color de una portada de revista. class clase_colores_portada { var $id_portada; var $titulo_portada; var $fondo_body; var $fondo_portada; var $letra; var $borde; var $hover; } //instanciamos la variable Portada_clase a la Clase clase_colores_portada $Portada_clase = new clase_colores_portada; $Portada_clase->id_portada = 1; $Portada_clase->titulo_portada = "Mujer pelirroja, espalda desnuda"; $Portada_clase->fondo_body = "black"; $Portada_clase->fondo_portada = "rgb(28, 33, 23, 0.95)"; $Portada_clase->letra = "rgb(236, 224, 217, 1)"; $Portada_clase->borde = "red"; $Portada_clase->hover = "rgb(153, 75, 51, 1)"; $serial_object_clase = serialize ($Portada_clase); ?> <pre> <? php echo ("Tipo de elemento: "); print_r ($Portada_clase); ?> </pre><br> <pre> <? php print_r ($serial_object_clase); ?> </pre><br><br> </body> </html>
Serialización de una matriz
<!DOCTYPE html> <html lang="es"> <head> <metacharset="UTF-8"> <metahttp-equiv="X-UA-Compatible"content="IE=edge"> <metaname="viewport"content="width=device-width, initial-scale=1.0"> <title>Serializar variables y objetos</title> </head> <body> <?php //variable tipo array que definen en sus posiciones características de color de una portada de revista. $array_portada= Array ( 'id_portada' => 1, 'titulo_portada' => "Mujer pelirroja, espalda desnuda", 'fondo_body' => "black", 'fondo_portada' => "rgb(28, 33, 23, 0.95);", 'letra' => "rgb(236, 224, 217, 1)", 'borde' => "red", 'hover' => "rgb(153, 75, 51, 1)" ); $serial_object_clase = serialize ($array_portada); ?> <pre> <? php echo ("Tipo de elemento: "); print_r ($array_portada); ?> </pre> <br><br> <? php print_r ($serial_object_clase); ?> <br><br> </body> </html>
Para recuperar la información del objeto o variable es necesario utilizar la instrucción unserialize()
Ejemplo
class clase_colores_portada { var $id_portada; var $titulo_portada; var $fondo_body; var $fondo_portada; var $letra; var $borde; var $hover; } $new_object = new clase_colores_portada; $new_object = unserialize ($serial_object);
Importante:
Si se ha serializado un objeto de tipo class y, además, pasado como cadena a otra página o fichero php, es preciso que esté definida la clase para poder instanciar la variable que finalmente contendrá el objeto deserializado. En estas condiciones se podrá invocar la instrucción de PHP: unserialize().
En caso contrario se obtendrá un error en la página del tipo: Fatal error: Uncaught Error: Class ‘clase_colores_portada’ not found