Paramètre

$data(string|array|object)requis

Donnée qui peut être sérializée.

Description / Informations supplémentaires

Une donnée peut avoir besoin d'être sérializée pour permettre d'être stockée avec succès et retournée de la base de donnée dans une forme que le langage PHP peut comprendre.

De manière confuse, les chaînes qui contiennent déjà des valeurs sérializées, sont sérilizées à nouveau résultant une sérialization emboîtée. Les autres chaînes ne sont pas modifiées.

Une solution possible pour prévenir ceci est de vérifier la valeur avec is_serialized() avant d'utiliser la fonction.

Retourne

(mixed) Une donnée scalaire.

Déclaration et structure de la fonction maybe_serialize()

function maybe_serialize( $data ) {
    if ( is_array( $data ) || is_object( $data ) ) {
        return serialize( $data );
    }

    /*
     * Double serialization is required for backward compatibility.
     * See https://core.trac.wordpress.org/ticket/12930
     * Also the world will end. See WP 3.6.1.
     */
    if ( is_serialized( $data, false ) ) {
        return serialize( $data );
    }

    return $data;
}
is_serialized()

Vérifie si une valeur a été sérializée.

Où est utilisée la fonction maybe_serialize() dans le CMS WordPress

Exemples

if( !is_serialized( $data ) ) {
    $data = maybe_serialize($data);
}
// Les chaînes retournées ne sont pas modifiées :
$data = 'Hello World!';
echo maybe_serialize( $data );
// Hello World!
 
// Les entiers, flottants et booléeen sont aussi retournés sans être modifiés :
$data = 55;
echo maybe_serialize( $data );
// 55
 
$data = 4.560
echo maybe_serialize( $data );
// 4.560
 
$data = true;
$data = maybe_serialize( $data );
// $data = true;
 
$data = null;
$data = maybe_serialize( $data );
// $data = null
 
// Un tableau d'objet sera retourné comme une chaîne sérializée :
$data = array( 1 => 'Hello World!', 'foo' => 'bar' );
echo maybe_serialize( $data );
// a:2:{i:1;s:12:"Hello World!";s:3:"foo";s:3:"bar";}
 
// Une chaîne sérializée sera sérializée une nouvelle fois :
$data = 'a:2:{i:1;s:12:"Hello World!";s:3:"foo";s:3:"bar";}';
echo maybe_serialize( $data );
// s:50:"a:2:{i:1;s:12:"Hello World!";s:3:"foo";s:3:"bar";}";

Sources

Codex WordPress : maybe_serialize()

Autres fonctions dans le même fichier : wp-includes/functions.php

Retour