igbinary_serialize

(PECL igbinary >= 1.1.1)

igbinary_serializeGénère une représentation binaire stockable et compacte d'une valeur

Description

igbinary_serialize(mixed $value): string|false

Génère une représentation stockable d'une valeur.

C'est une technique pratique pour stocker ou passer des valeurs PHP entre scripts, sans perdre leur structure ni leur type.

Pour reconvertir la chaîne de caractères linéarisée en une valeur PHP, la fonction igbinary_unserialize() peut être utilisée.

Liste de paramètres

value

La valeur à linéariser. igbinary_serialize() gère tous les types sauf les ressources et certains objets (confère la note ci-dessous). Il est possible de linéariser avec igbinary_serialize() un tableau qui contient des références sur lui-même. Les références circulaires à l'intérieur d'un tableau ou d'un objet à linéariser seront également stockées. Toute autre référence sera perdue.

Lorsqu'il linéarise des objets, igbinary tentera d'appeler les méthodes magiques __serialize() ou __sleep() avant la linéarisation. Cela permettra à l'objet de faire un nettoyage de dernière minute, etc., avant d'être linéarisé. De même, lorsque l'objet est restauré en utilisant la fonction igbinary_unserialize(), une des méthodes magiques __unserialize() ou __wakeup() est appelée.

Note:

Les attributs privés d'un objet auront le nom de la classe préfixé au nom de l'attribut; les attributs protégés seront préfixés avec un astérisque '*'. Ces valeurs préfixées ont des caractères nuls des deux cotés.

Valeurs de retour

Retourne une chaîne de caractères contenant une représentation du paramètre value sous forme de flux d'octets qui peut être stocké à n'importe quel endroit.

Il est à noter que c'est une chaîne binaire qui peut inclure des caractères nuls, et doit donc être stockée et gérée comme telle. Par exemple, dans une base de données, la sortie de la fonction igbinary_serialize() doit, en général, être stockée dans un champ de type BLOB plutôt que dans un champ de type CHAR ou TEXT.

Exemples

Exemple #1 igbinary_serialize() example

Exemple #2 Exemple avec igbinary_serialize()

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

L'exemple ci-dessus va afficher :

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

Notes

Note:

Il est à noter que de nombreux objets internes de PHP ne peuvent pas être linéarisés. Cependant, ceux qui le peuvent implémentent soit l'interface Serializable soit les méthodes magiques __serialize()/__unserialize() ou __sleep()/__wakeup(). Si une classe interne ne remplit aucune de ces conditions, elle ne peut pas être linéarisée de manière fiable.

Il existe des exceptions historiques à cette règle, où des objets internes peuvent être linéarisés sans implémenter ni l'interface ni les méthodes magiques.

Voir aussi