PHP 7.4可能會在2019年12月發售。此頁面將定期更新。
<strong>Preloading</strong>
#預先載入 rfc
Preloading
# (預先載入)是PHP核心的一個驚人的補充,它可以帶來一些主要的效能改進。
簡而言之:如果你今天使用的是框架,那麼它的檔案必須在每次請求時載入和重新編譯。預先載入允許伺服器在啟動時在記憶體中載入PHP文件,並使它們對所有後續請求永久可用。
效能的提高當然是有代價的:如果預先載入檔案的來源發生變化,則必須重新啟動伺服器。 <strong></strong>
Typed properties<strong></strong> rfc
類別變數可以是類型提示:
class A { public string $name; public Foo $foo; }
更新:到目前為止,已合併了Typed properties,從而為PHP 7.4確認了這些屬性。
Improved type variance
(改進的類型差異)
類型差異是一個值得自己發表博文的主題;<strong></strong>簡而言之:你將能夠使用
covariant返回類型
class ParentType {} class ChildType extends ParentType {} class A { public function covariantReturnTypes(): ParentType { /* … */ } } class B extends A { public function covariantReturnTypes(): ChildType { /* … */ } }和contravariant參數。
class A { public function contraVariantArguments(ChildType $type) { /* … */ } } class B extends A { public function contraVariantArguments(ParentType $type) { /* … */ } }更新:RFC目前處於投票階段,但看起來它會毫無問題地通過。
Foreign Function Interface<strong></strong>
(外部函數介面) rfc
不是這樣做:
$data['date'] = $data['date'] ?? new DateTime();
你可以這樣做:
$data['date'] ??= new DateTime();
更新:這個特性現在合併到PHP 7.4。
自訂物件序列化 rfc
#這個RFC加入了兩個新的魔術方法:<strong>__serialize</strong>和
__unserialize。在RFC中討論了這些方法與__sleep
__wakeup
方法的差異。更新:RFC通過。這個特性將會在PHP 7.4中加入。 <strong></strong>
No more narrow margins
rfc
從技術上講,這並不是與PHP 7.4相關的更新,但它確實值得一提。 RFC的投票規則已經改變:他們總是需要2/3的多數才能通過。
rfc
像Symfony的var轉儲程式這樣的函式庫很大程度上依賴於反射API來可靠地轉儲變數。以前,沒有對引用的適當反射支持,導致這些庫依賴hack來檢測引用。
ReflectionReference
類,解決了這個問題。更新:RFC已通過,PHP 7.4已確認變更。 新增mb_str_split
rfc
這個函數提供了與str_split相同的功能,但是是在多位元組字符串上。 總是啟用
rfc如標題所說,這個擴充功能現在在所有PHP安裝中都是永久可用的。 <strong></strong>預設不會啟用PEAR
<strong></strong>密碼雜湊(Hashing<strong></strong>
)登錄機碼 rfc
<strong></strong>棄用
rfc
這種資料交換格式從來沒有標準化過,現在它的擴充被廢棄了。
• 在DateTime
或datetimevariable
實例上呼叫var_dump將不再在物件上留下可存取的屬性。
• openssl_random_pseudo_bytes
將在錯誤情況下拋出例外。
• 試圖序列化PDO
或PDOStatement
實例將產生異常,而不是PDOException
。
• 在ArrayObject
實例上呼叫get_object_vars()
將傳回ArrayObject
本身的屬性,而不是被包裝的陣列或物件的值。注意(數組)強制轉換不受影響。
翻譯自:https://stitcher.io/blog/new-in-php-74#reflection-for-references-rfc
##相關推薦:《PHP7和PHP5在安全上的差異(實例)》
PHP7 的抽象語法樹(AST)所帶來的變化》
#《PHP7語言的執行原理(PHP7原始碼分析)》