關于是否要在 PHP 8 中引入 Union Types 的投票已于近日結束,投票結果顯示有 61 名 PHP 開發組成員投了贊成票,5 名投了反對票,


還留意到鳥哥在投票中投了反對票~)
因此根據投票結果,官方已確認將會在 PHP 8 中引入 Union Types 2.0,

關于 Union Types 的具體討論可在 GitHub 查看,下面我們來簡單了解一下 Union Types(聯合型別),
根據官方的介紹,Union Types(聯合型別)支持接收多個不同型別的值,而不僅僅是單一型別,PHP 目前已經支持兩種特殊的聯合型別:
-
Typeornull,使用特殊的?Type語法 -
arrayorTraversable,使特殊的iterable型別
不過 PHP 目前尚不支持任意的聯合型別,如要使用,需通過 phpdoc 注釋的幫助,示例如下:

根據資料統計的結果,在開源生態以及 PHP 自身的標準庫中使用聯合型別非常普遍,官方表示,如果 PHP 能支持聯合型別,將會允許我們將更多型別資訊從 phpdoc 遷移至函式簽名,這具有以下常見的優點:
-
型別實際上是強制執行的,因此可以及早發現錯誤,
-
因為它們是強制性的,所以型別資訊不太可能變得過時或遺漏邊緣情況,
-
在繼承程序中會檢查型別,以執行里氏替換原則(Liskov Substitution Principle)
-
可通過反射獲得型別資訊,
-
語法比 phpdoc 簡潔,
泛型之后,聯合型別可以說是目前型別宣告系統中最大的“缺口”,
提案
聯合型別使用 T1|T2|… 語法,可在所有接受的型別中使用:

支持的型別
聯合型別支持 PHP 當前支持的所有型別:空型別、可空聯合型別、false pseudo-type、重復和冗余型別,
型別語法
除特殊void型別外,PHP 的型別語法現在可以通過以下語法來描述:

- 以上是文章全部內容,有需要學習交流的友人請加入Swoole交流群的咱們一起,有問題一起交流,一起進步!前提是你是學技術的,感謝閱讀!
點此加入該群
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/103738.html
標籤:PHP
上一篇:Laravel 菜鳥的晉級之路
