(PECL spl_types >= 0.1.0)
SplEnum дает возможность эмулировать и создать перечисление объектов непосредственно в PHP.
SplEnum::__default
Пример #1 Пример использования SplEnum
<?php
class Month extends SplEnum {
    const __default = self::January;
    
    const January = 1;
    const February = 2;
    const March = 3;
    const April = 4;
    const May = 5;
    const June = 6;
    const July = 7;
    const August = 8;
    const September = 9;
    const October = 10;
    const November = 11;
    const December = 12;
}
echo new Month(Month::June) . PHP_EOL;
try {
    new Month(13);
} catch (UnexpectedValueException $uve) {
    echo $uve->getMessage() . PHP_EOL;
}
?>
Результат выполнения данного примера:
6 Value not a const in enum Month