首頁  >  文章  >  後端開發  >  PHP8新特性之構造函數屬性大加強!

PHP8新特性之構造函數屬性大加強!

藏色散人
藏色散人轉載
2020-07-23 13:17:166038瀏覽


PHP8新特性之構造函數屬性大加強!

新版本的PHP將於12月3日正式發布。除了大量的bug修復和小的改進,全球的開發人員也將獲得一些新的有趣功能。名單雖然還沒結束,但是,我們可以查看我們期待的新功能。我將準備一系列短篇文章,每一篇都將重點介紹,讓我們開始吧!

在第一篇文章中,我向大家介紹建構子屬性提升PHP8 將引入一個在諸如 Hack、Korlin 或 TypesScript 等語言中很有名的概念。它是如何運作的呢,在什麼樣的情況下可以使用?讓我們來看看下面的範例:

Alt Text

非常簡單的數值對象,不是嗎?我們幾乎每天都要與這種類型打交道。每當我們需要把數值從建構函數的參數傳遞給類別中屬性時,都需要書寫如圖所示的整塊模板程式碼,確實是令人感到些許厭煩。構造函數屬性提升功能將會為我們解決這個問題, 並且能夠讓類似的程式碼書寫更加簡短,簡單。讓我們來看看該如何使用:

Alt Text

我們可以簡單的在建構函數參數的類型宣告前增加一個存取修飾符, 之後該參數將自動指派給具有相同名稱的類別屬性。我們可以理解為,在建構函式中,具有存取修飾符的參數將會被提升,成為同名稱的類別屬性。

你可以混合使用屬性提升和常規的屬性宣告。如下面範例所示:

PHP8新特性之構造函數屬性大加強!

上述範例程式碼等效於下面範例的程式碼:

PHP8新特性之構造函數屬性大加強!

##建構子屬性提升(Constructor Property Promotion)只可以用在常規類別和

traits 引用類別裡面,它不可以被用在介面和抽象類別裡面(儘管我們可以在這些類別裡面宣告建構子)。

如果你的程式碼使用了大量的

值物件(VO)資料傳輸物件(DTO),建構子屬性提升(Constructor Property Promotion)將會大大簡化和縮短你的程式碼。類似的功能需求曾被多次討論,但只有 Nikita Popov 編寫的實作版本獲得了足夠的好評,它並將被合併到新的 PHP 版本中。您可以在此 RFC 中閱讀有關它的更多資訊。

在「深入 PHP8」系列的下一部分,我們將討論聯合類型的實作。敬請期待!


這篇文章最初發表在我司的部落格上。你可以點擊

這裡查看。


原文網址:https://dev.to/avantar/pe-in​​to-php8-pa...

翻譯網址:https://learnku. com/laravel/t/47600

以上是PHP8新特性之構造函數屬性大加強!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:learnku.com。如有侵權,請聯絡admin@php.cn刪除