Serializable

Från Wiki.linux.se
Version från den 29 augusti 2024 kl. 17.10 av Admin (diskussion | bidrag) (Skapade sidan med '=== Gränssnittet Serializable === (PHP 5 >= 5.1.0, PHP 7, PHP 8) ==== Introduktion ==== Gränssnitt för anpassad serialisering. Klasser som implementerar detta gränssnitt stöder inte längre __sleep() och __wakeup(). Metoden `serialize()` anropas när en instans behöver serialiseras. Detta anropar inte __destruct() eller har någon annan bieffekt om det inte är programmerat inuti metoden. När data unserialiseras är klassen känd och den lämpliga `unserialize(...')
(skillnad) ← Äldre version | Nuvarande version (skillnad) | Nyare version → (skillnad)
Hoppa till navigering Hoppa till sök

Gränssnittet Serializable

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

Introduktion

Gränssnitt för anpassad serialisering.

Klasser som implementerar detta gränssnitt stöder inte längre __sleep() och __wakeup(). Metoden `serialize()` anropas när en instans behöver serialiseras. Detta anropar inte __destruct() eller har någon annan bieffekt om det inte är programmerat inuti metoden. När data unserialiseras är klassen känd och den lämpliga `unserialize()`-metoden anropas som en konstruktor istället för att anropa __construct(). Om du behöver köra den vanliga konstruktorn kan du göra det i metoden.

Varning: Från och med PHP 8.1.0, kommer en klass som implementerar Serializable utan att också implementera __serialize() och __unserialize() att generera en avskrivningsvarning.

Gränssnittssammanfattning

interface Serializable {
/* Metoder */
public serialize(): ?string
public unserialize(string $data): void
}

Exempel

Exempel #1 Grundläggande användning
<?php
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);

$newobj = unserialize($ser);

var_dump($newobj->getData());
?>

Ovanstående exempel kommer att ge något liknande:

string(38) "C:3:"obj":23:{s:15:"My private data";}"
string(15) "My private data"

Innehållsförteckning

Sidslut

Orginalhemsidan på Engelska : https://www.php.net/manual/en/class.serializable.php
PHP
Språkreferens
Fördefinierade Gränssnitt och Klasser


Det här är en maskinöversättning av PHP-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/

Tack till Datorhjälp som har sponsrat Linux.se med webserver.