PHP 8 0 帶來的新特性

2022-06-29 14:57:18 字數 1911 閱讀 3856

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

php 8 引入了兩套jit編譯引擎:

htmlspecialchars($string, ent_compat | ent_html401, 'utf-8', false);
htmlspecialchars($string, double_encode: false);
替代了phpdoc註解的寫法,成為php原生語法。

class postscontroller

", methods=)

*/public function get($id)

}

class postscontroller

", methods: ["get"])]

public function get($id)

}

定義和初始化類屬性時,減少大量樣板**。

class point 

}

class point 

}

替代了phpdoc註解的寫法,現在可以原生語法宣告聯合型別,且會在執行時執行相應驗證。

class number 

}new number('nan'); // ok

class number 

}new number('nan'); // typeerror

match 與 switch 類似,相比有如下特點:

switch (8.0) 

echo $result;

//> oh no!

echo match (8.0) ;

//> this is what i expected

使用新的空指標安全運算子,可以使用鏈式呼叫了,不再需要用以前的null條件判斷。在鏈式寫法中的某一級元素為null時,整個鏈式執行終止並返回null。

$country =  null;

if ($session !== null)

}}

$country = $session?->user?->getaddress()?->country;
當乙個數值與另乙個字串格式的數值進行比較時,php 8 採用數值比較;否則,將該數值轉換為字串進行字串比較。

0 == 'foobar' // true
0 == 'foobar' // false
更多的內部函式其引數驗證失敗時會丟擲error異常。

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

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

strlen(); // 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

PHP8 0的新特性

php 8.0 是 php 語言的乙個主版本更新。它包含了很多新功能與優化項,包括命名引數 聯合型別 註解 構造器屬性提公升 match 表示式 nullsafe 運算子 jit,並改進了型別系統 錯誤處理 語法一致性。php 7htmlspecialchars string ent compat ...

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...