Description

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.

Paramètre

$data

(string | array | object) (Requis) Donnée qui peut être sérializée.

Retourne

(mixed) Une donnée scalaire.

Structure de la fonction maybe_serialize()

Définie dans le fichier wp-includes/functions.php à la ligne 597 :

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;
}

Fonction utilisée par maybe_serialize()

is_serialized()

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

Où trouver 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