PHP8新特性之构造函数属性大加强!
新版本的PHP將于12月3日正式發布。除了大量的bug修復和小的改進,全球的開發人員也將獲得一些新的有趣特性。名單雖然還沒有結束,但是,我們可以查看我們期待的新特性。我將準備一系列短篇文章,每一篇都將重點介紹,讓我們開始吧!
在第一篇文章中,我向大家介紹構造函數屬性提升。PHP8 將引入一個在諸如 Hack、Korlin 或 TypesScript 等語言中很有名的概念。它是如何工作的呢,在什么樣的情況下可以使用?讓我們看看下面的例子:
非常簡單的數值對象,不是嗎?我們幾乎每天都要與這種類型打交道。每當我們需要把數值從構造函數的參數傳遞給類中屬性時,都需要書寫如圖所示的整塊模板代碼,確實是令人感到些許厭煩。 構造函數屬性提升功能將會為我們解決這個問題, 并且能夠讓類似的代碼書寫更加簡短,簡單。 讓我們來看一下該如何使用:
我們可以簡單的在構造函數參數的類型聲明前增加一個訪問修飾符, 之后該參數將自動分配給具有相同名稱的類屬性。 我們可以理解為,構造函數中,具有訪問修飾符的參數將會得到提升,成為同名稱的類屬性。
你可以混合使用屬性提升和常規的屬性聲明。如下面例子所示:
上述示例代碼等效于下面例子的代碼:
構造函數屬性提升(Constructor Property Promotion)僅可以用在常規類和 traits 引用類里面,它不可以被用在接口和抽象類里面(盡管我們可以在這些類里面聲明構造函數)。
如果你的代碼使用了大量的 值對象(VO) 或者 數據傳輸對象(DTO),構造函數屬性提升(Constructor Property Promotion)將大大簡化和縮短你的代碼。類似的功能需求曾被多次討論,但只有 Nikita Popov 編寫的實現版本獲得了足夠多的好評,它并將被合并到新的 PHP 版本中。您可以在此 RFC 中閱讀有關它的更多信息。
在“深入 PHP8”系列的下一部分,我們將討論聯合類型的實現。敬請期待!
這篇文章最初發表在我司的博客上。你可以點擊這里查看。
原文地址:https://dev.to/avantar/pe-into-php8-pa...
譯文地址:https://learnku.com/laravel/t/47600
總結
以上是生活随笔為你收集整理的PHP8新特性之构造函数属性大加强!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用EPPlus(C#)读写Excel
- 下一篇: 买二手房的木地板要不要换掉 木地板用什么