Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> PHP

ประเภทยูเนี่ยนใน PHP 8


การใช้ Union Type ใน PHP 8 เราสามารถใช้ค่าตั้งแต่สองประเภทขึ้นไป แทนที่จะใช้ประเภทเดียว หากต้องการระบุหลายประเภท เส้นแนวตั้ง (|) ใช้เพื่อเข้าร่วม

ชนิดยูเนี่ยนรองรับพารามิเตอร์ ชนิดส่งคืน และคุณสมบัติ

ไวยากรณ์

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:โปรแกรม PHP 8 โดยใช้ Union Type

<?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

ประเภท Nullable ในประเภท Union

ใน PHP 7.1 จะใช้ประเภท nullable กับเครื่องหมายคำถาม ?type . ใน PHP 8 เราสามารถประกาศประเภท nullable เป็น type|null . ตัวอย่างเช่น:ลอย|int|null แต่เราไม่สามารถประกาศเป็น ?float|int .

ไวยากรณ์ประเภท Nullable

type1|type2|null

เราไม่ควรประกาศเช่น ?type1|type2 เพราะนี่จะเป็นการประกาศที่คลุมเครือ

  • การตรวจสอบข้อผิดพลาดในการคอมไพล์เวลา - ใน PHP ไม่อนุญาตให้ใช้ประเภทที่ซ้ำกันหรือซ้ำซ้อนในการประกาศประเภท การตรวจสอบนี้จะเกิดขึ้นระหว่างเวลาคอมไพล์โดยไม่ต้องโหลดคลาส/อินเทอร์เฟซอัตโนมัติ

  • ไม่อนุญาตให้ใช้ประเภทที่ซ้ำกัน − เราไม่สามารถประกาศซ้ำใน PHP เช่น int|int และยัง int|?int ไม่อนุญาต เพราะมันจะส่งกลับข้อผิดพลาดทางไวยากรณ์ "ข้อผิดพลาดร้ายแรง:ประเภทซ้ำ… ซ้ำซ้อนใน …ออนไลน์"

  • ไม่อนุญาตให้พิมพ์เป็นโมฆะ − ใน PHP 8 ประเภทยูเนี่ยน เป็นโมฆะ ไม่อนุญาตให้นำไปรวมกับประเภทอื่น

ตัวอย่าง

Function foo(): void|null{}

พิมพ์ผิดใน PHP 8

ประเภทเท็จเป็นส่วนหนึ่งของประเภท Union ใน PHP 8 ส่วนใหญ่เราใช้ null เป็นค่าส่งคืนเพื่อแสดงการไม่มีค่าส่งคืนหรือข้อผิดพลาด ตัวอย่างเช่น สมมติว่าเรามีวิธีชั้นเรียนที่ค้นหานักเรียนโดยใช้รหัสนักเรียน หากไม่มี ID นักศึกษา อาจเป็นค่าว่างเพื่อแสดงว่าไม่มี ID นักศึกษา แต่ PHP ใช้ เท็จ ถ้า รหัสนักศึกษา ไม่พบ

  • ประเภทเท็จใช้สำหรับความล้มเหลวใด ๆ แทนประเภท null

  • เราไม่สามารถใช้เท็จเป็นประเภทสแตนด์อโลนและไม่อนุญาตให้ใช้ประเภทสแตนด์อโลนที่เป็นค่าว่าง นั่นหมายความว่า เราไม่สามารถใช้ false, false|null และ ?false ได้

  • เราสามารถใช้ false ได้ทุกที่ที่ยอมรับประเภท เช่น พารามิเตอร์ คุณสมบัติ และค่าที่ส่งกลับ

  • ไม่มีประเภทตามตัวอักษรจริง แต่เราใช้ได้เฉพาะประเภทบูลเท่านั้น

ตัวอย่าง

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