vendredi 25 septembre 2026

À propos

Contact

Lexique · PHP

Sérialisation

En anglais : « Serialization »

Conversion d'une structure de données PHP (tableau, objet) en une chaîne de texte stockable ou transmissible, puis reconstructible à l'identique.

Une base de données ou un fichier ne sait stocker que du texte ou des types simples, jamais directement un tableau PHP avec sa structure. La sérialisation transforme cette structure en une chaîne qui décrit fidèlement son contenu, un peu comme on démonte un meuble en pièces numérotées pour le transporter, avant de le remonter à l’identique de l’autre côté.

Fonctionnement en PHP

Les fonctions natives serialize() et unserialize() effectuent cette conversion dans un format propre à PHP, préfixé par des indicateurs de type et de longueur (a:2:{...} pour un tableau de deux éléments). C’est différent du format JSON, plus universel mais qui ne conserve pas certaines subtilités des objets PHP.

Dans WordPress

La table wp_options et les métadonnées de wp_postmeta stockent couramment des tableaux sérialisés : quand on enregistre un tableau de réglages avec update_option(), WordPress le sérialise automatiquement via sa fonction utilitaire maybe_serialize(), et le désérialise à la lecture avec maybe_unserialize().

Exemple

$reglages = ['couleur' => 'bleu', 'taille' => 12];
update_option('wpm_reglages', $reglages);
// stocké en base sous la forme :
// a:2:{s:7:"couleur";s:4:"bleu";s:5:"taille";i:12;}

Pièges fréquents

Modifier à la main une chaîne sérialisée en base de données (par exemple lors d’un remplacement d’URL après une migration) casse le comptage de longueur intégré au format et rend la donnée illisible ; il faut passer par un outil dédié à la sérialisation, pas par un simple rechercher-remplacer. Ne jamais non plus appeler unserialize() sur une donnée venant d’un utilisateur non fiable, car cela peut déclencher l’exécution de code via des objets malveillants.