PHP 8에서 Union Type을 사용하면 단일 유형을 사용하는 대신 두 개 이상의 유형 값을 사용할 수 있습니다. 여러 유형을 지정하려면 세로줄(|) 가입하는 데 사용됩니다.
Union 유형은 매개변수, 반환 유형 및 속성을 지원합니다.
구문
type1|type2|……|type_n
예시 1:조합 유형
<?php class Number { private int | float $num; public function getNum(): float | int { return $this->num } public function setNum(float | int): void { $this->num = $num; } } ?>
예시 2:Union Type을 사용하는 PHP 8 프로그램
<?php class Number{ private int|float $number; public function setNumber(int|float $number): void { $this->number = $number; } public function getNumber(): int|float { return $this->number; } #passing floats or integer values to the number object } $number = new Number(); $number->setNumber(5); print_r($number->getNumber()); $number->setNumber(11.54); print_r($number->getNumber()); ?>
출력
511.54
유니온 유형의 Null 허용 유형
PHP 7.1에서 nullable 형식은 물음표 ?type과 함께 사용됩니다. . PHP 8에서는 nullable 유형을 type|null로 선언할 수 있습니다. . 예:float|int|null 하지만 ?float|int로 선언할 수 없습니다. .
Nullable 유형 구문
type1|type2|null
?type1|type2와 같이 선언하면 안 됩니다. 모호한 선언이 될 것이기 때문입니다.
-
컴파일 시간 오류 검사 − PHP에서는 유형 선언에서 공용체 유형 중복 또는 중복 유형이 허용되지 않습니다. 이 검사는 클래스/인터페이스를 자동 로드하지 않고 컴파일 타임에 발생합니다.
-
중복 유형은 허용되지 않습니다. − int|int와 같은 PHP에서는 중복을 선언할 수 없습니다. 또한 int|?int 허용되지 않습니다. 구문 오류를 반환하기 때문입니다. "치명적인 오류:중복 유형...이 온라인에서 중복됩니다."
-
void 유형은 허용되지 않습니다. − PHP 8에서 통합 유형 void 다른 유형과 결합할 수 없습니다.
예
Function foo(): void|null{}
PHP 8의 거짓 유형
False 유형은 PHP 8의 Union 유형의 일부입니다. 대부분 반환 값이나 오류가 없음을 표시하기 위해 반환 값으로 null을 사용합니다. 예:학생 ID로 학생을 찾는 클래스 메서드가 있다고 가정합니다. 학생 ID가 없으면 학생 ID가 없음을 나타내기 위해 null을 제공할 수 있습니다. 그러나 PHP는 false를 사용합니다. 학생 ID인 경우 찾을 수 없습니다.
-
모든 실패에는 null 유형 대신 False 유형이 사용됩니다.
-
false를 독립형 유형으로 사용할 수 없으며 nullable 독립형 유형도 허용되지 않습니다. 즉, false, false|null 및 ?false를 사용할 수 없습니다.
-
매개변수, 속성 및 반환 값과 같이 유형이 허용되는 모든 곳에서 false를 사용할 수 있습니다.
-
실제 리터럴 유형이 없으며 대신 bool 유형만 사용할 수 있습니다.
예
<?php Class Student { public function find(int $id): User|false { // ... } } ?>