投票經過,PHP 8 確認引入 Union Types 2.0

關因而否要在 PHP 8 中引入 Union Types 的投票已於近日結束,投票結果顯示有 61 名 PHP 開發組成員投了同意票,5 名投了反對票。php

 

 

 

 

還留意到鳥哥在投票中投了反對票~)函數

所以根據投票結果,官方已確認將會在 PHP 8 中引入 Union Types 2.0。學習

 

 

關於 Union Types 的具體討論可在 GitHub 查看,下面咱們來簡單瞭解一下 Union Types(聯合類型)。code

根據官方的介紹,Union Types(聯合類型)支持接收多個不一樣類型的值,而不單單是單一類型。PHP 目前已經支持兩種特殊的聯合類型:blog

  • Type or null,使用特殊的?Type語法繼承

  • array or Traversable,使特殊的iterable類型ip

不過 PHP 目前尚不支持任意的聯合類型。如要使用,需經過 phpdoc 註釋的幫助,示例以下:ci

 

 

根據數據統計的結果,在開源生態以及 PHP 自身的標準庫中使用聯合類型很是廣泛。官方表示,若是 PHP 能支持聯合類型,將會容許咱們將更多類型信息從 phpdoc 遷移至函數簽名,這具備如下常見的優勢:pdo

  • 類型其實是強制執行的,所以能夠及早發現錯誤。開發

  • 由於它們是強制性的,因此類型信息不太可能變得過期或遺漏邊緣狀況。

  • 在繼承過程當中會檢查類型,以執行里氏替換原則(Liskov Substitution Principle)

  • 可經過反射得到類型信息。

  • 語法比 phpdoc 簡潔。

泛型以後,聯合類型能夠說是目前類型聲明系統中最大的「缺口」。

提案

聯合類型使用 T1|T2|… 語法,可在全部接受的類型中使用:

 

 

支持的類型

聯合類型支持 PHP 當前支持的全部類型:空類型、可空聯合類型、false pseudo-type、重複和冗餘類型。

類型語法

除特殊void類型外,PHP 的類型語法如今能夠經過如下語法來描述:

 

 

  • 以上是文章所有內容,有須要學習交流的友人請加入Swoole交流羣的我們一塊兒,有問題一塊兒交流,一塊兒進步!前提是你是學技術的。感謝閱讀!

點此加入該羣

相關文章
相關標籤/搜索