Recherche…


Syntaxe

  • sérialiser ($ object)
  • unserialize ($ object)

Remarques

Tous les types de PHP, à l'exception des ressources, sont sérialisables. Les ressources sont un type de variable unique qui référence les sources "externes", telles que les connexions de base de données.

Sérialiser / désérialiser

serialize() renvoie une chaîne contenant une représentation de flux d'octets de toute valeur pouvant être stockée dans PHP. unserialize() peut utiliser cette chaîne pour recréer les valeurs de la variable d'origine.

Pour sérialiser un objet

serialize($object);

Désérialiser un objet

unserialize($object)

Exemple

$array = array();
$array["a"] = "Foo";
$array["b"] = "Bar";
$array["c"] = "Baz";
$array["d"] = "Wom";

$serializedArray = serialize($array);
echo $serializedArray; //output: a:4:{s:1:"a";s:3:"Foo";s:1:"b";s:3:"Bar";s:1:"c";s:3:"Baz";s:1:"d";s:3:"Wom";}

L'interface sérialisable

introduction

Les classes qui implémentent cette interface ne prennent plus en charge __sleep() et __wakeup() . La méthode serialize est appelée chaque fois qu'une instance doit être sérialisée. Cela n'invoque pas __destruct() ou n'a aucun autre effet secondaire, sauf si programmé dans la méthode. Lorsque les données sont unserialized la classe est connue et appropriée unserialize() méthode est appelée en tant que constructeur au lieu d'appeler __construct() . Si vous devez exécuter le constructeur standard, vous pouvez le faire dans la méthode.

Utilisation de base

class obj implements Serializable {
    private $data;
    public function __construct() {
        $this->data = "My private data";
    }
    public function serialize() {
        return serialize($this->data);
    }
    public function unserialize($data) {
        $this->data = unserialize($data);
    }
    public function getData() {
        return $this->data;
    }
}

$obj = new obj;
$ser = serialize($obj);

var_dump($ser); // Output: string(38) "C:3:"obj":23:{s:15:"My private data";}"

$newobj = unserialize($ser);

var_dump($newobj->getData()); // Output: string(15) "My private data"


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow