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版本上还有相关区别,大家有兴趣的话可以都去了解一下,更好的丰富下自己,在这里就不在一一列出了。