PHP 8.1.9 Released!

Serialização

Enumerações são serializadas de maneira diferente dos objetos. Especificamente, elas têm um novo código de serialização, "E", que especifica o nome do caso enum. A rotina de desserialização pode então usar isso para definir uma variável para o valor singleton existente. Isso garante que:

<?php
Naipe
::Copas === unserialize(serialize(Naipe::Copas));

print 
serialize(Naipe::Copas);
// E:11:"Naipe:Copas";
?>

Na desserialização, se uma enum e caso não podem ser encontrados para combinar com um valor serializado, um aviso será emitido e false retornado.

Se uma Pure Enum for serializada para JSON, um erro será lançado. Se uma Backed Enum for serializada para JSON, ela será representada apenas por seu valor escalar, no tipo apropriado. O comportamento de ambas pode ser sobrescrito ao implementar JsonSerializable.

Para print_r(), a saída de um caso enum é ligeiramente diferente dos objetos para minimizar confusões.

<?php
enum Foo 
{
    case 
Bar;
}

enum Bazint {
    case 
Beep 5;
}

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

/* Produz

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