Backed enum в PHP
Backed enum связывает каждый case с уникальным int или string и безопасно преобразует внешний scalar.
enum Status: string { case Draft = 'draft'; }Преобразование
Status::from() выбрасывает ValueError для неизвестного значения, tryFrom() возвращает null. Выбор зависит от обязательности входа.
Пример
<?php
$status = Status::tryFrom($input);
if ($status === null) {
throw new InvalidArgumentException('Неизвестный статус');
}Хранение
В базе хранится scalar value, а в доменном коде используется case. Миграция должна учитывать удаление или переименование значения.
Ошибка
Enum не заменяет объект, если состоянию нужны сложные инварианты и данные, отличающиеся для каждого экземпляра.
Связанные материалы
Источники и проверка
- PHP Documentation Group — структурный источник, без внешней ссылки
Последняя содержательная проверка: . Автор-разработчик Михаил Каржин. Методика качества контента.