新版本的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新特性之構造函數屬性大加強!的詳細內容。更多資訊請關注PHP中文網其他相關文章!