PHP
Serialisatie van objecten
Zoeken…
Syntaxis
- serialize ($ object)
- unserialize ($ object)
Opmerkingen
Alle PHP-typen behalve bronnen zijn serienummerbaar. Bronnen zijn een uniek variabel type dat verwijst naar "externe" bronnen, zoals databaseverbindingen.
Serialiseren / Unserialiseren
serialize()
retourneert een tekenreeks die een byte-streamrepresentatie bevat van elke waarde die kan worden opgeslagen in PHP. unserialize()
kan deze tekenreeks gebruiken om de oorspronkelijke variabele waarden opnieuw te maken.
Een object serialiseren
serialize($object);
Een object niet meer serieel maken
unserialize($object)
Voorbeeld
$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";}
De interface met serienummer
Invoering
Klassen die deze interface implementeren, ondersteunen niet langer
__sleep()
en__wakeup()
. De methode serialize wordt aangeroepen wanneer een exemplaar moet worden geserialiseerd. Dit roept__destruct()
niet op of heeft geen andere bijwerking tenzij deze in de methode is geprogrammeerd. Wanneer de gegevens niet wordenunserialized
de klasse bekend en wordt de juiste methodeunserialize()
als constructor aangeroepen in plaats van__construct()
aan te roepen. Als u de standaardconstructor moet uitvoeren, kunt u dit in de methode doen.
Basis gebruik
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"