預加載是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 再也不維護,核心團隊決定使用 PHP 7.4 刪除其默認安裝。
對如何使用散列庫進行內部更改,以便用戶能夠更輕鬆地使用它們。
ext/wwdx
此數據交換格式從未標準化,如今不推薦使用其擴展名。
升級 PHP 版本時,您應該始終查看完整的 UPGRADING 文檔。 如下是一些突出顯示的向後不兼容的更改:
parent ::
將生成編譯時錯誤而不是運行時錯誤。DateTime
或 DateTimeImmutable
實例上調用var_dump
將再也不在對象上留下可訪問的屬性。openssl_random_pseudo_bytes
將在錯誤狀況下拋出異常。PDO
或 PDOStatement
實例將生成異常而不是 PDOException
。ArrayObject
實例上調用 get_object_vars()
將返回 ArrayObject
自己的屬性,而不是包裝數組或對象的值。 請注意, (array)
強制轉換不受影響。若是你已經看到文章末尾了,你極可能對 PHP 感興趣。 也許你也有興趣閱讀個人其餘內容? 如下是我寫的一些內容。 本人博客 :iacblog 本人公衆號 :php_open