PHP8.1將於2021年11月25日發布,該版本增加了一些新特性,其中有幾個特性需要留意下。
- 全新的
enum
類型(New Enum Types) - 只讀屬性(Readonly Properties)
- 在初始化時合作
new
(Using “new” in initializers) - 純交集類型(Pure intersection types)
交集類型是PHP8.1新增加的類型特性,它提示對應的值必須添加所賦予的一個或多個類型約束。是不是與聯合類型(union type)有點相似?聯合類型是or
,而交集類型是and
。
基本語法: 交集類型的語法與聯合類型語法類似。
class DemoClass {
public Countable|Stringable $Union;
public Countable&Stringable $Intersection;
}
在上面例子中,$Union
變量可以接受Countable
或者Stringable
的任意值,而$Intersection
必須同時滿足Countable
和Stringable
限制類型的值,如果不滿足條件,會拋出TypeError
異常。
交集類型可以應用於屬性定義、函數參數和返回值。
交集類型只能應用於接口和類中,這點與聯合類型不同。像int&string
這種純交集是沒有意義的,因為這種不可能滿足條件。混合類型(mixed)也不是允許。