Enumerations may include constants, which may be public, private, or protected, although in practice private and protected are equivalent as inheritance is not allowed.
An enum constant may refer to an enum case:
<?php
enum Size
{
case Small;
case Medium;
case Large;
public const Huge = self::Large;
}
?>
Just to clarify, enum constants *can* contain cases, but they don't *have* to; other constant values are legitimate - including cases of other Enumerations.
<?php
enum Suit
{
case Hearts;
case Clubs;
case Spades;
case Diamonds;
public const Card = Size::Large; // A case from a different enum
}
enum Size
{
case Small;
case Medium;
case Large;
public const Scale = 297/210; // A float
}
echo Suit::Diamonds::Card::Scale; // Getting the constant Scale from the constant Card in a Suit.
?>