Enum
Enum задає фіксований набір варіантів, і параметр типу Status вже не прийме довільний рядок. Backed enum привʼязує кожен case до int чи string для бази й API, from() і tryFrom() перетворюють значення назад, а cases() віддає всі варіанти. Enum може мати методи, константи й реалізовувати інтерфейси.
enum Status: string
{
case Draft = 'draft';
case Published = 'published';
}
function publish(Status $status): void { /* лише Status */ }
final class Status
{
public const DRAFT = 'draft';
public const PUBLISHED = 'published';
}
function publish(string $status): void { /* будь-який рядок */ }