[譯] 關於 PHP 7.4 的最新消息

PHP 7.4可能會在2019年12月的某個地方發佈。此頁面將同時收到按期更新。 最後更新時間是2019年1月14日

預加載

預加載是PHP核心的一個驚人的補充,能夠帶來一些重大的性能改進。 簡而言之:若是您今天使用的是框架,則必須在每次請求時加載和從新編譯其文件。 預加載容許服務器在啓動時在內存中加載PHP文件,並使它們永久可用於全部後續請求。 性能提高固然須要付出代價:若是預加載文件的來源發生變化,則必須從新啓動服務器。php

設置強類型

類變量類型能夠提早聲明:數組

class A {
    public string $name;
    
    public Foo $foo;
}
複製代碼

更新07-01:截至目前,已合併類型屬性,所以已確認PHP 7.4。服務器

改進類型差異

我過去曾寫過 PHP 的類型系統,因此很高興看到一些改進其實是在 PHP 的核心。 類型差別是一個值得本身的博客文章的主題; 簡而言之:你將可以使用協變返回類型......框架

class ParentType {}
class ChildType extends ParentType {}

class A {
    public function covariantReturnTypes(): ParentType { /* … */ }
}

class B extends A {
    public function covariantReturnTypes(): ChildType { /* … */ }
}
複製代碼

和回調參數dom

class A {
    public function contraVariantArguments(ChildType $type) { /* … */ }
}

class B extends A {
    public function contraVariantArguments(ParentType $type) { /* … */ }
}
複製代碼

更新14-01:RFC目前處於投票階段,但看起來它會毫無問題地經過。函數

外部函數接口

外部函數接口,簡稱 FFI ,容許從用戶區調用 C代碼。 這意味着 PHP 擴展能夠用純 PHP 編寫。 應該指出,這是一個複雜的主題。 您仍然須要 C 的知識才能正確使用此功能。性能

空融合分配運算符

而不是這樣作:

$data['date'] = $data['date'] ?? new DateTime();
複製代碼

你能夠這樣作:

$data['date'] ??= new DateTime();
複製代碼

更新22-01:此功能如今在PHP 7.4中合併。spa

獲取更多利潤

從技術上講,這不是與 PHP 7.4 相關的更新,但它絕對值得一提。 RFC 的投票規則已經改變:它們老是須要 2/3 的多數才能經過。code

反射引用

像 Symfony 的 var 轉儲程序這樣的庫很大程度上依賴於反射 AP I來可靠地轉儲變量。 之前,沒有對引用的適當反射支持,致使這些庫依賴 hack 來檢測引用。 PHP 7.4 添加了 ReflectionReference 類來解決這個問題。 更新02-14:RFC已經過,PHP 7.4已確認更改。cdn

mb_str_split 的添加

此函數提供與 str_split 相同的功能,但在多字節字符串上。

ext-hash 始終啓用

正如標題所說,此擴展示在可在全部 PHP 版本中安裝永久使用。

PEAR 默認狀況下不啓用

因爲 PEAR 再也不維護,核心團隊決定使用 PHP 7.4 刪除其默認安裝。

密碼哈希註冊表

對如何使用散列庫進行內部更改,以便用戶能夠更輕鬆地使用它們。

棄用 ext/wwdx

此數據交換格式從未標準化,如今不推薦使用其擴展名。

不向後兼容的變化

升級 PHP 版本時,您應該始終查看完整的 UPGRADING 文檔。 如下是一些突出顯示的向後不兼容的更改:

  • 在沒有父級的類中引用 parent :: 將生成編譯時錯誤而不是運行時錯誤。
  • DateTimeDateTimeImmutable 實例上調用var_dump 將再也不在對象上留下可訪問的屬性。
  • openssl_random_pseudo_bytes 將在錯誤狀況下拋出異常。
  • 嘗試序列化 PDOPDOStatement 實例將生成異常而不是 PDOException
  • ArrayObject 實例上調用 get_object_vars() 將返回 ArrayObject 自己的屬性,而不是包裝數組或對象的值。 請注意, (array) 強制轉換不受影響。

等一下......

若是你已經看到文章末尾了,你極可能對 PHP 感興趣。 也許你也有興趣閱讀個人其餘內容? 如下是我寫的一些內容。 本人博客 :iacblog 本人公衆號 :php_open

相關文章
相關標籤/搜索