PHP 8 中的聯合型別
在 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 程式
<?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
聯合型別中的可空型別
在 PHP 7.1 中,可空型別使用問號**?type**。在 PHP 8 中,我們可以將可空型別宣告為**type|null**。例如:**float|int|null**,但我們不能將其宣告為**?float|int**。
可空型別語法
type1|type2|null
我們不應該像**?type1|type2**那樣宣告,因為這將是一個不明確的宣告。
**編譯時錯誤檢查** − 在 PHP 中,不允許在型別宣告中重複或冗餘的型別。此檢查將在編譯時進行,無需自動載入類/介面。
**不允許重複型別** − 我們不能在 PHP 中宣告重複型別,例如**int|int**,並且也不允許**int|?int**。因為這將返回語法錯誤。“致命錯誤:重複型別……在……第……行是冗餘的。”
**不允許使用 void 型別** − 在 PHP 8 中,聯合型別**void**不允許與任何其他型別組合。
示例
Function foo(): void|null{}PHP 8 中的 False 型別
False 型別是 PHP 8 中聯合型別的一部分。我們主要使用 null 作為返回值來表示返回值的缺失或錯誤。例如:假設我們有一個類方法,透過學生 ID 查詢學生。如果學生 ID 不存在,它可能會返回 null 來表示學生 ID 不存在。但是,如果找不到**學生 ID**,PHP 會使用**false**。
False 型別用於任何失敗,而不是 null 型別。
我們不能將 false 用作獨立型別,也不允許可空獨立型別。這意味著,我們不能使用 false、false|null 和 ?false。
我們可以在任何接受型別的地方使用 false,例如引數、屬性和返回值。
它沒有真正的文字型別,而只能使用 bool 型別。
示例
<?php
Class Student {
public function find(int $id): User|false
{
// ...
}
}
?>
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP