Das Serializable-Interface

(PHP 5 >= 5.1.0, PHP 7)

Einführung

Interface für benutzerdefiniertes Serialisieren.

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 Seiteneffekt 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.

Interface-Übersicht

Serializable {
/* Methoden */
abstract public serialize ( void ) : string
abstract public unserialize ( string $serialized ) : void
}

Beispiel #1 Basisnutzung

<?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(15) "Meine private-Daten"

Inhaltsverzeichnis