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

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