Serialisering

Från Wiki.linux.se
Version från den 20 augusti 2024 kl. 08.03 av Admin (diskussion | bidrag) (Skapade sidan med ' == Serialisering == Uppräkningar serialiseras annorlunda än objekt. Specifikt har de en ny serialiseringskod, "E", som specificerar namnet på enum-fallet. Deserialiseringsrutinen kan sedan använda detta för att sätta en variabel till det existerande singleton-värdet. Detta säkerställer att: <pre> Suit::Hearts === unserialize(serialize(Suit::Hearts)); print serialize(Suit::Hearts); // E:11:"Suit:Hearts"; </pre> Vid deserialisering, om en enum och ett fall in...')
(skillnad) ← Äldre version | Nuvarande version (skillnad) | Nyare version → (skillnad)
Hoppa till navigering Hoppa till sök

Serialisering

Uppräkningar serialiseras annorlunda än objekt. Specifikt har de en ny serialiseringskod, "E", som specificerar namnet på enum-fallet. Deserialiseringsrutinen kan sedan använda detta för att sätta en variabel till det existerande singleton-värdet. Detta säkerställer att:

Suit::Hearts === unserialize(serialize(Suit::Hearts));

print serialize(Suit::Hearts);
// E:11:"Suit:Hearts";

Vid deserialisering, om en enum och ett fall inte kan hittas för att matcha ett serialiserat värde, kommer en varning att utfärdas och false returneras.

Om en Pure Enum serialiseras till JSON, kommer ett fel att kastas. Om en Backed Enum serialiseras till JSON, kommer den endast att representeras av sitt skalära värde, i den lämpliga typen. Beteendet för båda kan åsidosättas genom att implementera JsonSerializable.

För print_r() är utmatningen av ett enum-fall något annorlunda än objekt för att minimera förvirring.

enum Foo {
    case Bar;
}

enum Baz: int {
    case Beep = 5;
}

print_r(Foo::Bar);
print_r(Baz::Beep);

/* Ger

Foo Enum (
    [name] => Bar
)
Baz Enum:int {
    [name] => Beep
    [value] => 5
}
*/

Sidslut

Orginalhemsidan på Engelska : https://www.php.net/manual/en/language.enumerations.serialization.php
PHP
Språkreferens
Språkreferens#Uppräkningar


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/