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.

Warnung

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

interfaceSerializable {
publicunserialize(string$data): void
}

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:{s:19:"Meine private-Daten";}" string(19) "Meine private-Daten" 

Inhaltsverzeichnis

To Top