Das Serializable-Interface
(PHP 5 >= 5.1.0, PHP 7, PHP 8)
Einführung
Interface für benutzerdefiniertes Serialisieren.
Die Klassen, die dieses Interface implementieren, unterstützen __sleep und __wakeup nicht mehr. Die Methode serialize wird immer aufgerufen, wenn eine Instanz serialisiert werden muss. Dabei wird weder __destruct() aufgerufen noch irgend ein anderer Nebeneffekt erzeugt, es sei denn, ein solcher wird in der Methode serialize explizit erzeugt. Wenn die Daten deserialisiert werden, ist die Klasse bekannt und die passende unserialize()-Methode wird anstelle des Konstruktors __construct() aufgerufen. Falls notwendig, kann der Standardkonstruktor innerhalb von unserialize() aufgerufen werden.
Seit PHP 8.1.0 erzeugt eine Klasse, die Serializable implementiert, ohne gleichzeitig auch __serialize() und __unserialize() zu implementieren, eine Deprecated- (veraltet) Warnung.
Interface-Übersicht
Beispiel #1 Grundlegende Verwendung
<?php
class obj implements Serializable {
private $data;
public function __construct() {
$this->data = "Meine private-Daten";
}
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);
$newobj = unserialize($ser);
var_dump($newobj->getData());
?>
Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:
string(42) "C:3:"obj":27:19:"Meine private-Daten";" string(19) "Meine private-Daten"
Inhaltsverzeichnis
- Serializable::serialize — Die String-Darstellung eines Objekts
- Serializable::unserialize — Erstellt das Objekt