PHP7.0 的新特性

PHP7.0 的新特性經常會被面試官問到,在平時的項目開發中運用它們也會提升一定的代碼質量和代碼運行性能,可見這個知識點的重要性。不過有很多人都沒有去系統的瞭解掌握,今天我剛好系統整理了一番分享出來。

圖片版

PHP7.0 的新特性

文字版

<code>1. 新增了標量類型聲明和函數的返回值類型聲明例如:
class OrderService extends BaseService{
...
/**
* 所有訂單詳情都是通過這個入口
* @param $orderNo
* @return array|mixed
* @throws Exception
*/
public function getOrderDetailByOrderNo(string $orderNo) : array {
$order = $this->model->getByFields(['order_no' => $orderNo]);
if (empty($order)) {
return [];
}
return (new OrderFactory)->getOrder($order['order_type'])->getOrderDetailByOrderNo($orderNo);
}
}
2. 太空船運算符(組合比較符):<=>
例如:$c = $a <=> $b
若 $a>$b,則 $c=1
若 $a=$b,則 $c=0
若 $a3. NULL合併運算:??
PHP7 之前:$c = isset($b)?$b:0;
PHP7+ :$c = $b??0;
4. 定義常量數組:define("ARR",[1,2,3])
5. 新增抽象語法樹AST(高度解耦)
PHP7 之前:PHP 代碼 -> Parser 語法解析 -> OPCODE -> 執行
PHP7+ :PHP 代碼 -> Parser 語法解析 -> AST -> OPCODE -> 執行
6. 命名空間引用優化
PHP7 之前:
use FooLibrary\\Bar\\Baz\\ClassA;

use FooLibrary\\Bar\\Baz\\ClassB;
PHP7+:
use FooLibrary\\Bar\\Baz\\{ ClassA, ClassB};
7. 反序列化函數Unserialize()提供更安全的過濾特性
8. 新增整除函數intdiv()
例如:intdiv(10,3)
結果:3
9. 錯誤處理更友好
* 在PHP7+ 中,很多致命錯誤以及可恢復的致命錯誤,都被轉換為異常來處理了。
這些異常繼承自 Error 類,此類實現了 Throwable 接口 (所有異常都實現了這個基礎接口)
* PHP7+ 進一步方便開發者處理, 讓開發者對程序的掌控能力更強。
因為在默認情況下, Error會直接導致程序中斷, 而PHP7+ 則提供捕獲並且處理的能力,
讓程序繼續執行下去, 為程序員提供更靈活的選擇
10. 新增匿名類
通過new class 來實例化一個匿名類,可以用來替代一些"用後即焚"的完整類定義
例如:
publicfunctionlog(string$msg);
}
classApplication{
private$logger;
publicfunctiongetLogger():Logger{
return$this->logger;
}
publicfunctionsetLogger(Logger$logger){
$this->logger=$logger;
}
}

$app=newApplication;//使用newclass創建匿名類
$app->setLogger(newclassimplementsLogger{
publicfunctionlog(string$msg){
print($msg);
}});
$app->getLogger()->log("我的第一條日誌");
結果:我的第一條日誌
11. 新增兩個更安全的偽隨機生成器函數random_bytes()和random_int()
12. Closure::call()
有著更好的性能,將一個閉包函數動態綁定到一個新的對象實例並調用執行該函數
例如:
private$x=1;
}
//PHP7之前版本定義閉包函數代碼
$getXCB=function(){
return$this->x;
};
//閉包函數綁定到類A上
$getX=$getXCB->bindTo(newA,'A');
echo$getX();
//PHP7+代碼
$getX=function(){
return$this->x;
};
echo$getX->call(newA);
13. 移除擴展:ereg、mssql、mysql/<code>


分享到:


相關文章: