Examples
예제 #1 기본 제한 값
<?php
enum SortOrder
{
case ASC;
case DESC;
}
function query($fields, $filter, SortOrder $order = SortOrder::ASC) { ... }
?>
query()
함수는 이제 $order
가 SortOrder::ASC
또는 SortOrder::ASC
로 보장된다는 사실을 알고 안전하게 진행할 수 있습니다. 다른 값은 TypeError가 발생하므로 더 이상의 오류 검사나 테스트가 필요하지 않습니다.
예제 #2 고급 배타적 값
<?php
enum UserStatus: string
{
case Pending = 'P';
case Active = 'A';
case Suspended = 'S';
case CanceledByUser = 'C';
public function label(): string
{
return match($this) {
static::Pending => 'Pending',
static::Active => 'Active',
static::Suspended => 'Suspended',
static::CanceledByUser => 'Canceled by user',
};
}
}
?>
이 예에서 사용자의 상태는 UserStatus::Pending
, UserStatus::Active
, UserStatus::Suspended
또는 UserStatus::CanceledByUser
중 하나일 수 있습니다. 함수는 UserStatus
에 대해 매개변수를 입력한 다음 이 네 가지 값인 마침표만 수락할 수 있습니다.
네 가지 값 모두 사람이 읽을 수 있는 문자열을 반환하는 label()
메서드가 있습니다. 이 문자열은 데이터베이스 필드나 HTML 선택 상자에서 사용할 수 있는 "머신 이름" 스칼라 문자열과 무관합니다.
<?php
foreach (UserStatus::cases() as $case) {
printf('<option value="%s">%s</option>\n', $case->value, $case->label());
}
?>