Backed Enum (с типом)
enum Status: string {
case Draft = 'draft';
case Published = 'published';
case Archived = 'archived';
}
$post->status = Status::Published;
echo Status::Published->value; // "published"
$s = Status::from('draft'); // Status::Draft
Pure Enum (без типа)
enum Direction {
case North; case South; case East; case West;
}
Преимущества
- IDE-автодополнение и статический анализ знают все возможные значения
- Невозможно передать несуществующее значение
- Enum может реализовывать интерфейсы и иметь методы