PHP 8.1 enums replace the old constant-on-a-class pattern. Backed enums map to int or string values — enum Status: string { case Active = 'active'; case Paused = 'paused'; }.
Methods on the enum work like any class. Status::cases() returns every case for iteration. Status::from('active') parses input; tryFrom() returns null instead of throwing.
Doctrine, Symfony Serializer, and Laravel’s Eloquent now all support backed enums in casts directly.