Serialización

Las enumeraciónes se serializan de manera diferente a los objetos. Específicamente, tienen un nuevo código de serialización, "E", que especifica el nombre del caso de la enumeración. El rutina de deserialización es capaz de usar eso para establecer una variable en el valor singleton existente. Eso asegura que:

<?php

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

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

Durante la deserialización, si no se puede encontrar un caso de enumeración que coincida con un valor serializado, se emitirá una advertencia y se devolverá false.

Si un Enum Puro se serializa a JSON, se lanzará un error. Si un Enum Respaldado se serializa a JSON, se representará solo por su valor escalar, en el tipo apropiado. El comportamiento de ambos puede ser anulado implementando JsonSerializable.

Para print_r(), la salida de un caso de enumeración es ligeramente diferente de los objetos para minimizar la confusión.

<?php

enum Foo {
case
Bar;
}

enum
Baz: int {
case
Beep = 5;
}

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

/* Imprime:

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

User Contributed Notes

There are no user contributed notes for this page.
To Top