Enumerations are a restricting layer on top of classes and class constants, intended to provide a way to define a closed set of possible values for a type.
<?php
enum Suit
{
    case Hearts;
    case Diamonds;
    case Clubs;
    case Spades;
}
function do_stuff(Suit $s)
{
    // ...
}
do_stuff(Suit::Spades);
?>
For a full discussion, see the Enumerations chapter.
   If an enum is converted to an object, it is not
   modified. If an enum is converted to an array,
   an array with a single name key (for Pure enums) or
   an array with both name and value keys
   (for Backed enums) is created.  All other cast types will result in an error.