Computer >> 컴퓨터 >  >> 프로그램 작성 >> PHP

PHP 8의 유니온 유형

<시간/>

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
      {
         // ...
      }
   }
?>