又到了這個時候了!是時候讓 Santa ElePHPant 拜訪世界各地所有優秀的 PHP 小開發人員了,並向他們展示新的好東西,讓他們更輕鬆地建立 Web。
截至撰寫本文時,PHP 8.2 處於候選版本 1 (RC1) 狀態。我們正處於該版本的開發和錯誤修復的後期階段,您可以看出,因為像 SiteGround 這樣具有前瞻性的 Web 主機現在正在提供 RC 版本供其客戶進行測試。 (您看到那裡的“測試”一詞了嗎?對於那些不知道這意味著什麼的人來說,這意味著“不在生產中”!)
那麼讓我們來看看 Santa ElePHPant 為我們帶來的一些新禮物
新好東西
首先,讓我們來看看 PHP 開發人員感興趣的一些新功能。這並不是 Santa ElePHPant 包中新物品的詳盡清單。這只是我認為大多數 PHP 開發人員會感興趣的事情的簡短清單。
唯讀類
在 PHP 8.1 中,我們得到了類別的唯讀屬性。對於許多項目來說,這是一個巨大的飛躍。然而,比利時電話號碼數據 仍然有一個小洞需要堵塞,類別。是的,您可以將類別中的每個類型屬性設為唯讀,這樣就可以了,但說實話,這需要大量的輸入,如果我們知道的話,我們知道開發人員很懶。因此,在 PHP 8.2 中我們可以將整個類別標記為readonly。
這裡我們有一個定義為readonly 的類別。這個類別有 2 個屬性,它們本質上都是唯讀的。 PHP 8.1 中的唯讀規則仍然適用。您只能在設定屬性後初始化該屬性一次。
$myObj = new MyClass(‘卡爾在這裡’,42);
然而,一旦它們被初始化,它們現在就是不可變的。
$myObj->myProp = ‘卡爾不再在這裡’;
致命錯誤:未擷取錯誤:無法修改唯讀屬性 MyClass::myProp
只讀類別的另一種行為是屬性永遠不能動態加入到類別中
以下我們將討論棄用動態屬性以及這是一件好事。甚至還有一個註釋允許您覆蓋它。但是,如果將類別標記為readonly,則無法覆寫它。
特質中的常數
自 PHP 5.4 以來,Traits 就一直存在於 PHP 中。長期以來,它們一直是該語言對「組合優於繼承」的回答。現在,特徵有了一個有趣的新功能,即在特徵中定義常數的能力。
特徵我的特徵{
私有常數 MY_CONSTANT = 42;
現在,如果您的特徵使用常數,您可以在特徵中定義它,而不必記住在使用該特徵的每個類別中定義它。
特徵我的特徵
私有常數 MY_CONSTANT = 42;
公用函數meaningOfLife():int
返回自我::MY_CONSTANT
類別我的類別使用我的特徵;
$myObj = new MyClass();
就像生活中的一切一樣,也有一些規則。
特徵可以定義類別常數。如果一個類別使用該特徵,它也可以定義相同的類別常數,個帳戶登入滾筒廣告博客滾 只要可見性和值完全相同。所以上面的例子可以工作,但是下面的例子會觸發致命錯誤
特徵我的特徵私有常數 MY_CONSTANT = 42;
儘管如此,即使有必須遵守的規則, 這也是真正的進步。 Traits 是在類別之間共享程式碼的好方法,現在它們更獨立。
隨機擴展 5.x + 隨機擴展改進
原始 PHP 隨機數產生器仍在基本程式碼中。它從來都不是很好,而且對於加密用途來說絕對沒有用處。PHP 8.2 現已穩定並可在 在 PHP 7 中,我們得到了幾個新函數random_int()和random_bytes()。他們花了很長時間來解決問題,但在幕後,它們只是本機作業系統隨機數產生器的介面。
這實際上是我將兩個不同的 RFC 放在一起的。第一個「Random Extension 5.x」投票通過後,艾鉛 發現它有一些問題。第二個 RFC「隨機擴展改進」已準備就緒並進行投票,以解決第一個 RFC 中發現的問題。
最終結果是一組新的類,它們為我們在 PHP 中提供了更好的偽隨機數。