PHP Sérialisation de différents types


Exemple

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

Ceci est utile pour stocker ou transmettre des valeurs PHP sans perdre leur type et leur structure.

Pour rendre la chaîne sérialisée dans une valeur PHP, utilisez unserialize () .

Sérialiser une chaîne

$string = "Hello world";    
echo serialize($string);

// Output: 
// s:11:"Hello world";

Sérialiser un double

$double = 1.5;    
echo serialize($double);

// Output: 
// d:1.5;

Sérialiser un flotteur

Le flottement est sérialisé en double.

Sérialisation d'un entier

$integer = 65;    
echo serialize($integer);

// Output: 
// i:65;

Sérialiser un booléen

$boolean = true;    
echo serialize($boolean);

// Output: 
// b:1;

$boolean = false;    
echo serialize($boolean);

// Output: 
// b:0;

Serializing null

$null = null;    
echo serialize($null);

// Output: 
// N;

Sérialisation d'un tableau

$array = array(
    25,
    'String',
    'Array'=> ['Multi Dimension','Array'],
    'boolean'=> true,
    'Object'=>$obj, // $obj from above Example
    null,
    3.445
); 


// This will throw Fatal Error
// $array['function'] = function() { return "function"; };

echo serialize($array);

// Output:
// a:7:{i:0;i:25;i:1;s:6:"String";s:5:"Array";a:2:{i:0;s:15:"Multi Dimension";i:1;s:5:"Array";}s:7:"boolean";b:1;s:6:"Object";O:3:"abc":1:{s:1:"i";i:1;}i:2;N;i:3;d:3.4449999999999998;}

Sérialiser un objet

Vous pouvez également sérialiser des objets.

Lors de la sérialisation d'objets, PHP tentera d'appeler la fonction membre __sleep () avant la sérialisation. Ceci permet à l'objet d'effectuer un nettoyage de dernière minute, etc. avant d'être sérialisé. De même, lorsque l'objet est restauré en utilisant unserialize () la fonction membre __wakeup () est appelée.

class abc {
    var $i = 1;
    function foo() {
        return 'hello world';
    }
}

$object = new abc(); 
echo serialize($object);

// Output:
// O:3:"abc":1:{s:1:"i";i:1;} 

Notez que les fermetures ne peuvent pas être sérialisées:

$function = function () { echo 'Hello World!'; };
$function(); // prints "hello!"

$serializedResult = serialize($function);  // Fatal error: Uncaught exception 'Exception' with message 'Serialization of 'Closure' is not allowed'