И чистые, и типизированные перечисления реализуют внутренний интерфейс
с именем UnitEnum.
Интерфейс UnitEnum включает статический метод cases().
Метод cases() возвращает упакованный массив вариантов, которые определили в перечислении. Варианты возвращаются в порядке объявления.
<?php
enum Suit
{
case Hearts;
case Diamonds;
case Clubs;
case Spades;
}
var_dump(Suit::cases());
enum SuitBacked: string
{
case Hearts = 'H';
case Diamonds = 'D';
case Clubs = 'C';
case Spades = 'S';
}
var_dump(SuitBacked::cases());
Ручное определение метода cases() в перечислении приведёт к фатальной ошибке.