Computer >> Máy Tính >  >> Lập trình >> PHP

Loại Union trong PHP 8

Sử dụng Union Type trong PHP 8, chúng ta có thể sử dụng các giá trị của hai hoặc nhiều kiểu, thay vì sử dụng một kiểu duy nhất. Để chỉ định nhiều loại, dòng dọc (|) được sử dụng để tham gia cùng họ.

Kiểu liên minh hỗ trợ các tham số, kiểu trả về và thuộc tính.

Cú pháp

type1|type2|……|type_n

Ví dụ 1:Loại Liên minh

<?php
   class Number
   {
      private int | float $num;
      public function getNum():
      float | int
      {
         return $this->num
      }
      public function setNum(float | int):
      void
      {
         $this->num = $num;
      }
   }
?>

Ví dụ 2:Chương trình PHP 8 sử dụng loại Union

<?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());
?>

Đầu ra

511.54

Các kiểu vô hiệu trong Kiểu Liên hợp

Trong PHP 7.1, kiểu nullable được sử dụng với dấu chấm hỏi ? Type . Trong PHP 8, chúng ta có thể khai báo các kiểu nullable là type | null . Ví dụ: float | int | null , nhưng chúng tôi không thể khai báo nó là ? float | int .

Cú pháp loại có thể rỗng

type1|type2|null

Chúng ta không nên khai báo như ? Type1 | type2 bởi vì đây sẽ là một khai báo không rõ ràng.

  • Kiểm tra lỗi thời gian biên dịch - Trong PHP, không được phép sử dụng các kiểu trùng lặp hoặc dư thừa kiểu union trong khai báo kiểu. Việc kiểm tra này sẽ diễn ra trong thời gian biên dịch mà không cần tự động tải các lớp / giao diện.

  • Không cho phép các loại trùng lặp - Chúng tôi không thể khai báo các bản sao trong PHP như int | int và cả int |? int không được đồng ý. Vì nó sẽ trả về lỗi cú pháp. "Lỗi nghiêm trọng:Loại trùng lặp… bị thừa trong… trên dòng."

  • loại void không được phép - Trong PHP 8, loại union void không được phép kết hợp với bất kỳ loại nào khác.

Ví dụ

Function foo(): void|null{}

Loại sai trong PHP 8

Kiểu sai là một phần của kiểu Union trong PHP 8. Hầu hết chúng ta sử dụng null làm giá trị trả về để hiển thị sự vắng mặt của giá trị trả về hoặc lỗi. Ví dụ:Giả sử chúng ta có một phương thức lớp tìm sinh viên theo mã số sinh viên. Nếu không có Mã số sinh viên, nó có thể cho giá trị rỗng để chứng tỏ rằng không có Mã số sinh viên. Nhưng PHP sử dụng false nếu Mã số sinh viên không tìm thấy.

  • Loại sai được sử dụng cho bất kỳ lỗi nào thay vì loại rỗng.

  • Chúng tôi không thể sử dụng false làm kiểu độc lập và cũng không cho phép các kiểu độc lập nullable. Điều đó có nghĩa là chúng ta không thể sử dụng false, false | null và? False.

  • Chúng ta có thể sử dụng false ở bất cứ nơi nào chấp nhận các kiểu như tham số, thuộc tính và giá trị trả về.

  • Nó không có kiểu chữ thực sự, thay vào đó chúng ta chỉ có thể sử dụng kiểu bool.

Ví dụ

<?php
   Class Student {
      public function find(int $id): User|false
      {
         // ...
      }
   }
?>