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版本上還有相關區別,大家有興趣的話可以都去了解一下,更好的豐富下自己,在這裏就不在一一列出了。