serialize

(PHP 4, PHP 5, PHP 7, PHP 8)

serializeGénère une représentation stockable d'une valeur

Description

serialize(mixed$value): string

Retourne un tableau en chaine de caractères.

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

Pour récupérer une variable sérialisée et retrouver une valeur PHP, utilisez unserialize().

Liste de paramètres

value

La valeur à sérialiser. serialize() accepte tous les types sauf les ressources ressource et certains objets (voir note ci-dessous). Vous pouvez même sérialiser un tableau qui contient des références sur lui-même. Les références cycliques dans des tableaux/objets seront également stockées. Toutes les autres références seront perdues.

Lors de la sérialisation d'un objet, PHP tentera d'appeler les fonctions membres __serialize() ou __sleep() avant de sérialiser. Cela permet à l'objet de faire un dernier nettoyage, etc. avant d'être sérialisé. De même, lorsque l'objet est restauré en utilisant unserialize(), la fonction membre __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 sous forme de flux d'octets qui peut être stocker partout.

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

Exemples

Exemple #1 Exemple avec serialize()

<?php
// $session_data contient un tableau multidimensionnel , avec les
// informations de session de l'utilisateur courant. On utilise serialize()
// pour les stocker dans une base de données

$conn = odbc_connect("webdb", "php", "chicken");
$stmt = odbc_prepare($conn,
"UPDATE sessions SET data = ? WHERE id = ?");
$sqldata = array (serialize($session_data), $_SERVER['PHP_AUTH_USER']);
if (!
odbc_execute($stmt, $sqldata)) {
$stmt = odbc_prepare($conn,
"INSERT INTO sessions (id, data) VALUES(?, ?)");
if (!
odbc_execute($stmt, array_reverse($sqldata))) {

}
}
?>

Notes

Note:

Il est à noter que de nombreux objets internes de PHP ne peuvent pas être sérialisé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 sérialisée de manière fiable.

Il existe des exceptions historiques à cette règle, où des objets internes peuvent être sérialisés alors qu'ils n'implémentent pas l'interface ou n'exposent pas les méthodes magiques prévues à cet effet.

Avertissement

Lorsque la fonction serialize() sérialise des objets, l'antislash de fin n'est pas inclus dans l'espace de nom du nom de la classe et ce, pour un maximum de compatibilité.

Voir aussi

To Top