열거형 개요

열거형 개요 (Enumerations overview)

원문 출처: PHP 공식 매뉴얼 — Language Reference · Enumerations overview (PHP 8 >= 8.1.0)

열거형(Enumerations), 줄여서 **"Enum"**은 개발자가 직접 정의할 수 있는 사용자 정의 타입인데, 그 값이 몇 가지 이산적인(discrete) 후보 중 하나로 제한되도록 해요. 도메인 모델(Domain Model)을 정의할 때 특히 유용한데, "유효하지 않은 상태를 표현할 수 없게 만드는"(making invalid states unrepresentable) 것이 가능해지기 때문이죠.

Enum은 여러 언어에서 저마다 다양한 기능과 함께 등장해요. PHP에서 Enum은 특별한 종류의 객체에요. Enum 자체가 클래스이고, 가능한 케이스들은 모두 그 클래스의 단일 인스턴스(single-instance object)들이죠. 다시 말해 Enum 케이스는 유효한 객체라서, 객체를 쓸 수 있는 어디에서든 사용할 수 있어요. 타입 검사(type check)에서도 마찬가지고요.

열거형의 가장 대표적인 예가 내장된 boolean 타입이에요. boolean은 유효한 값이 truefalse인 열거 타입이죠. Enum을 쓰면 개발자가 자신만의, 더 견고한(arbitrarily robust) 열거형을 얼마든지 정의할 수 있어요.