PHP7新特性

1、太空船操作符“<=>”

echo 1 <=> 1;// 0
echo 1 <=> 2;// -1
echo 2 <=> 1;//1

2、變量類型聲明和返回值類型聲明

declare(strict_types=1);//開啓嚴格模式
function sum(int ...$ints)
{
    return array_sum($ints);
}
var_dump(sum(2,'3.1',4.1));
//運行結果會報錯,因開啓嚴格模式驗證數據類型不一致,如果去掉第一行,則不報錯,會把傳入的小數和字符串強制轉換爲int類型

3、null合併操作符

//php7之前使用
$page = isset($_GET['page']) ? $_GET['page'] : 0;

//php7時使用
$page = $_GET['page'] ?? : 0;
//如果有連續三元運算符
$page = $_GET['page'] ?? : $_POST['page'] ?? : 0;

4、常量數組

define('ANIMALS',[
    'dog','cat','bird'
]);

5、namespace批量導入

//php7之前版本
use Space/ClassA;
use Space/ClassB;
use Space/ClassC;

//php7版本
use Space/{ClassA,ClassB,ClassC}
//還可以直接起別名
use Space/{ClassA,ClassB,ClassC as C}

6、htrowable接口

php7實現了全局htrowable接口,在原來Exception和部分Error上實現的都是try/catch塊捕獲,如果沒有匹配的catch塊,則調用異常處理函數進行處理,如果尚未註冊異常處理函數,則按照傳統方式處理。

7、Closurre:call()

在php7之前,我們需要動態的給一個對象添加方法時,可以通過Closure來複制一個閉包對象,並綁定一個$this對象和類作用域。但在PHP7中新添加了Closure:call(),可以通過call來暫時綁定一個閉包對象到$this對象並調用它。

8、intdiv函數

PHP7增加了一個新的整除函數,在代碼中不需要手動轉了,哪就是intdiv函數

//php7之前版本
var_dump(intval(10/3));

//PHP7版本
var_dump(intdiv(10,3));

9、list的方括號寫法

我們知道可以通過list來實現解構賦值,如:

$arr = [1, 2, 3];
list($a, $b, $c) = $arr;

php7進行了優化,如:

$arr = [1, 2, 3];
[$a, $b, $c] = $arr;
//注意:這裏的[]並不是數組的意思,只是list的簡略形式。

 

除了以上這些,還有很多改變和特性,例如foreach遍歷數組時不再修改內部指針,移除了ASP和script PHP標籤、移除了$HTTP_RAW_POST_DATA、匿名類、類常量可見性等,都可以自行嘗試一下。

PHP7.1 和 PHP7.2版本上還有相關區別,大家有興趣的話可以都去了解一下,更好的豐富下自己,在這裏就不在一一列出了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章