PHP Conference Kansai 2025

igbinary_serialize

(PECL igbinary >= 1.1.1)

igbinary_serializeGenera una representación binaria almacenable y compacta de un valor

Descripción

igbinary_serialize(mixed $value): string|false

Genera una representación almacenable de un valor.

Es una técnica práctica para almacenar o pasar valores PHP entre scripts, sin perder su estructura ni su tipo.

Para reconvertir la cadena sérializada en un valor PHP, la función igbinary_unserialize() puede ser utilizada.

Parámetros

value

El valor a serializar. igbinary_serialize() gestiona todos los tipos excepto los recursos y ciertos objetos (confiere la nota a continuación). Incluso los arrayx que contienen referencias a sí mismos pueden ser serializados con igbinary_serialize(). Las referencias circulares dentro de un array o de un object a serializar serán igualmente almacenadas. Cualquier otra referencia será perdida.

Al serializar objetos, igbinary intentará llamar a los métodos mágicos __serialize() o __sleep() antes de la serialización. Esto permitirá al objeto realizar una limpieza de último momento, etc., antes de ser serializado. De igual manera, cuando el objeto es restaurado utilizando la función igbinary_unserialize(), uno de los métodos mágicos __unserialize() o __wakeup() es llamado.

Nota:

Los atributos privados de un objeto tendrán el nombre de la clase prefijado al nombre del atributo; los atributos protegidos serán prefijados con un asterisco '*'. Estos valores prefijados tienen caracteres nulos en ambos lados.

Valores devueltos

Retorna una cadena de caracteres que contiene una representación del parámetro value en forma de flujo de bytes que puede ser almacenado en cualquier lugar.

Es de notar que es una cadena binaria que puede incluir caracteres nulos, y debe por lo tanto ser almacenada y gestionada como tal. Por ejemplo, en una base de datos, la salida de la función igbinary_serialize() debe, en general, ser almacenada en un campo de tipo BLOB en lugar de en un campo de tipo CHAR o TEXT.

Ejemplos

Ejemplo #1 Ejemplo con igbinary_serialize()

<?php
$ser
= igbinary_serialize(['test', 'test']);
echo
urlencode($ser), "\n";
var_export(igbinary_unserialize($ser));
?>

El resultado del ejemplo sería:

%00%00%00%02%14%02%06%00%11%04test%06%01%0E%00
array (
  0 => 'test',
  1 => 'test',
)

Notas

Nota:

Es de notar que muchos objetos internos de PHP no pueden ser serializados. Sin embargo, aquellos que pueden implementan ya sea la interfaz Serializable o los métodos mágicos __serialize()/__unserialize() o __sleep()/__wakeup(). Si una clase interna no cumple ninguna de estas condiciones, no puede ser serializada de manera fiable.

Existen excepciones históricas a esta regla, donde objetos internos pueden ser serializados sin implementar ni la interfaz ni los métodos mágicos.

Ver también

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top