首頁 > 頭條 > PHP即將引入Union Types,投票已通過!

PHP即將引入Union Types,投票已通過!

爱喝马黛茶的安东尼
發布: 2019-11-15 17:58:32
轉載
4454 人瀏覽過

PHP即將引入Union Types,投票已通過!

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

PHP即將引入Union Types,投票已通過!

PHP即將引入Union Types,投票已通過!

也留意到鳥哥在投票中投了反對票~

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

PHP即將引入Union Types,投票已通過!

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

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

    ·Type or null,使用特殊的Type語法

# #    ·

array or Traversable,讓特殊的iterable型別

不過PHP 目前尚未支援任意的組合型別。如要使用,需透過 phpdoc 註解的協助,範例如下:

根據

資料統計的結果

,在開源生態以及 PHP 本身的標準函式庫中使用聯合型別非常普遍。官方表示,如果PHP 能支援聯合類型,將會允許我們將更多類型資訊從phpdoc 遷移至函數簽名,這具有以下常見的優點:    ·

類型實際上是強制執行的,因此可以及早發現錯誤。     ·

因為它們是強制性的,所以類型資訊不太可能變得過時或遺漏邊緣情況。     ·

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

可透過反射獲得型別資訊。     ·

文法比 phpdoc 簡潔。

泛型之後,聯合類型可以說是目前類型宣告系統中最大的「缺口」。

****提案****

聯合類型使用T1T2… 語法,可在所有接受的類型中使用:

<pre style="margin: 0px; padding: 0px; font-family: "Courier New" !important; font-size: 14px; line-height: 
1.5em; white-space: pre-wrap; overflow-wrap: break-word;">class Number { private int|float number): void { number;
} public function getNumber (): int|float { return $this->number;
}
}
登入後複製

支援的類型

聯合類型支援PHP 目前支援的所有類型:空白類型、可空聯合類型、false pseudo-type、重複和冗餘類型。

****類型語法****

除特殊void類型外,PHP 的類型語法現在可以透過以下語法來描述:

1 0PHP中文網,大量的免費

PHP入門教程###,歡迎線上學習! ###
相關標籤:
來源:jianshu.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板