И Pure Enums, и Backed Enums реализуют внутренний интерфейс UnitEnum . UnitEnumвключает статический метод cases(). cases()возвращает упакованный массив всех определенных случаев в порядке объявления.

<?php
Suit::cases();
// Produces: [Suit::Hearts, Suit::Diamonds, Suit::Clubs, Suit:Spades]
?>

Ручное определение cases()метода для Enum приведет к фатальной ошибке.