PHP
Sérialisation d'objets
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 sontunserialized
la classe est connue et appropriéeunserialize()
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"