【PHP】PHP 7.4 新特性

PHP 7.4 預計在 2019 年年底就會正式發佈了,本文先來看看一下 PHP 7.4 的新特性。

1.預加載

預加載的實現理論上是能夠爲 PHP 帶來很大的性能提高的。好比說:如今傳統的 PHP 框架或者項目,都是有一次請求就加載和從新編譯一次文件的。預加載的實現使得咱們能夠直接將 PHP 文件加載到內存中,並一次來永駐內存來應對後續的請求。(跟 swoole 有點像了?)php

不過預加載也會帶來一點機器內存要求和一些損耗,你還須要注意的是,每次在更新完 PHP 文件以後,你須要重啓服務纔可使得新的 PHP 文件生效。git

2.屬性類型限定

在定義類屬性的時候,你能夠限定屬性的類型 string boolean 或者是一個類的實例:github

class GeiXue
{
    public string $name;
    public Foo $foo;
}

3.類型限定

其實類型限定在 PHP 很早以前就支持了,只不過在 7.4 版本以後,PHP 作得更好了,咱們來看兩個例子:swoole

class Parents {}

class Child extends Parents {}

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

class B extends A
{
    public function covariantReturnTypes(): Child
    { /* … */ }

}

或者下面這個例子你就很熟悉了:參數類型限定app

class A
{

    public function contraVariantArguments(Child $child)
    { /* … */ }

}

class B extends A
{
    public function contraVariantArguments(Parents $parent)
    { /* … */ }

}

在 Laravel 的項目中,你應該常常見到這些。框架

4.外部函數接口

外部函數接口(Foreign Function Interface)總的來講就是容許你調用 C 代碼,也就是說,最好的應用場景可能就是:你之後寫 PHP 的擴展就可直接用 PHP 來寫了!函數

不過須要注意的是:這目前來講仍是比較複雜的,你最好仍是有點 C 語言的基礎。性能

5.新的 Null 三元操做符

之前咱們可能會這樣寫:spa

$data['date'] = $data['date'] ?? new DateTime();

PHP 7.4 以後你能夠這樣:code

$data['date'] ??= new DateTime();

6.自定義對象序列化

在 PHP 7.4 的時候,增長了 __serialize__unserialize 這兩個魔術方法,你能夠用來自定義對象的序列化。

7.新增 mb_str_split 函數

這個函數就是 str_split 函數的 mb (multi bytes) 版本,跟你接觸過的 mb_substrsubstr 是同理的。

8.PEAR 再也不默認開啓

因爲 PEAR 的開發已經好久沒有活躍過了,PHP 官方團隊決定移除 PEAR 的默認開啓。

9.廢除 ext/wwdx

此種數據交換格式貌似歷來都沒有一個行業標準,因此如今也是該它們退休的時候了。

最後,你須要注意 PHP 7.4 的向後不兼容特性,能夠經過此連接來查看詳細內容:https://github.com/php/php-src/blob/PHP-7.4/UPGRADING

https://github.com/php/php-src/blob/PHP-7.4/UPGRADING

Happy Hacking!

相關文章
相關標籤/搜索