PHP 8.5.0 Beta 2 available for testing

Serialización

Las enumeraciones 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 enumeración. La rutina de deserialización puede entonces usar eso para establecer una variable al valor singleton existente. Eso asegura que:

<?php

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

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

Al deserializar, si no se puede encontrar una enumeración y un caso para coincidir con un valor serializado, se emitirá una advertencia y se devolverá false.

Si una Enumeración Pura se serializa a JSON, se lanzará un error. Si una Enumeración Respaldada se serializa a JSON, estará representada solo por su valor escalar, en el tipo apropiado. El comportamiento de ambas puede ser sobrescrito 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);

/* Produce

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