Ответ
В PHP 8.1+ при объявлении Backed Enum (перечислений со скалярными значениями) явно указывать ключевое слово const не требуется. Сами case-ы уже являются константными значениями перечисления.
Пример объявления Backed Enum с целочисленными значениями:
enum Status: int {
case PENDING = 1; // Это и есть константа. Ключевое слово 'const' не нужно.
case APPROVED = 2;
case REJECTED = 3;
}
Особенности и доступ к значениям:
- Каждый case — это объект, а его скалярное значение доступно через свойство
->value.echo Status::PENDING->value; // Выведет: 1 - Значения case-ов должны быть уникальными в рамках перечисления.
- Попытка явно объявить константу внутри enum (например,
const FOO = 'bar';) возможна, но это будет отдельная сущность, не связанная с case-ами, и обычно является избыточной, что может ухудшить читаемость кода.