PHP Conference Japan 2024

型別系統

PHP 使用名義型型別系統,具有強烈的行為子型別關係。子型別關係在編譯時檢查,而型別的驗證則在執行時動態檢查。

PHP 的型別系統支援各種原子型別,可以將它們組合在一起以建立更複雜的型別。其中一些型別可以寫成型別宣告

原子型別

一些原子型別是內建型別,它們與語言緊密整合,無法使用使用者定義的型別複製。

基本型別列表如下:

純量類型 (Scalar Types)

如果一個值是 intfloatstringbool 類型,則它被視為純量。

使用者自定義類型

可以使用 介面類別列舉 來定義自定義類型。這些被認為是使用者自定義類型或類別類型。例如,可以定義一個名為 Elephant 的類別,然後可以實例化 Elephant 類型的物件,並且函式可以請求 Elephant 類型的參數。

複合類型 (Composite Types)

可以將多個原子類型組合成複合類型。PHP 允許以下列方式組合類型:

  • 類別類型(介面和類別名稱)的交集。
  • 類型的聯集。

交集類型 (Intersection Types)

交集類型接受滿足多個類別類型聲明而不是單個聲明的值。組成交集類型的各個類型由 & 符號連接。因此,由類型 TUV 組成的交集類型將寫為 T&U&V

聯集類型 (Union Types)

聯集類型接受多種不同類型的值,而不是單一類型。組成聯集類型的各個類型由 | 符號連接。因此,由類型 TUV 組成的聯集類型將寫為 T|U|V。如果其中一個類型是交集類型,則需要用括號括起來才能以 DNF 形式編寫:T|(X&Y)

類型別名 (Type Aliases)

PHP 支援兩個類型別名:mixediterable,它們分別對應於 object|resource|array|string|float|int|bool|nullTraversable|array聯集類型

注意PHP 不支援使用者自定義類型別名。

新增註記

使用者貢獻的註記

此頁面沒有使用者貢獻的註記。
To Top