PHP8 0的新特性

2021-10-11 01:25:14 字數 2755 閱讀 1787

php 8.0 是 php 語言的乙個主版本更新。

它包含了很多新功能與優化項, 包括命名引數、聯合型別、註解、構造器屬性提公升、match 表示式、nullsafe

運算子、jit,並改進了型別系統、錯誤處理、語法一致性。

php

7htmlspecialchars

($string

,ent_compat

|ent_html401

,'utf-8'

,false

);

php

8htmlspecialchars

($string

, double_encode:

false

);

現在可以用 php 原生語法來使用結構化的元資料,而非 phpdoc 宣告。

php

7class

postscontroller

", methods=)

*/public

function

get(

$id)

}

php

8class

postscontroller

", methods: ["get"])]

public

function

get(

$id)

}

更少的樣板**來定義並初始化屬性。

php

7class

point

}

php

8class

point

}

相對於以前的 phpdoc 宣告型別的組合, 現在可以用原生支援的聯合型別宣告取而代之,可在實際執行中驗證。

php

7class

number

}new

number

('nan');

// ok

php

8class

number

}new

number

('nan');

// typeerror

新的 match 類似於 switch,並具有以下功能:

php

7switch

(8.0

)echo

$result

;//> oh no!

php

8echo match (

8.0)

;//> this is what i expected

現在可以用新的 nullsafe 運算子鏈式呼叫,而不需要條件檢查 null。 如果鏈條中的乙個元素失敗了,整個鏈條會中止並認定為 null。

php

7$country

=null;if

($session

!==null)}

}

php

8$country

=$session?-

>

user?-

>

getaddress()

?->

country

;

php 8 比較數字字串(numeric string)時,會按數字進行比較。 不是數字字串時,將數字轉化為字串,按字串比較。

php70

=='foobar'

// true

php80

=='foobar'

// false

現在大多數內部函式在引數驗證失敗時丟擲 error 級異常。

php

7strlen([

]);// warning: strlen() expects parameter 1 to be string, array given

array_chunk([

],-1

);// warning: array_chunk(): size parameter expected to be greater than 0

php

8strlen([

]);// typeerror: strlen(): argument #1 ($str) must be of type string, array given

array_chunk([

],-1

);// valueerror: array_chunk(): argument #2 ($length) must be greater than 0

php 8 引入了兩個即時編譯引擎。 tracing jit 在兩個中更有潛力,它在綜合基準測試中顯示了三倍的效能, 並在某些長時間執行的程式中顯示了 1.5-2 倍的效能改進。 典型的應用效能則和 php 7.4 不相上下。

PHP 8 0 帶來的新特性

php 8.0 是php語言的一次主版本更新。它包含很多新特性及優化,包括具名引數 聯合型別 註解 建構函式屬性提公升 match表示式 空指標安全運算子 jit,以及型別系統 錯誤處理和一致性方面的改進。php 8 引入了兩套jit編譯引擎 htmlspecialchars string,ent ...

php8 0 編譯安裝以及開啟 JIT

使用centos7.5作為環境 安裝相關依賴 yum install libxml2 libxml2 devel openssl openssl devel bzip2 bzip2 devel libcurl libcurl devel libjpeg libjpeg devel libpng li...

MySQL 8 0的新特性(二)

8.0 版本提供對地形的支援,其中包括了對空間參照系的資料來源資訊的支援,srs aware spatial資料型別,空間索引,空間函式。總而言之,8.0版本可以理解地球表面的經緯度資訊,而且可以在任意受支援的5000個空間參照系中計算地球上任意兩點之間的距離。st spatial referenc...