1、运算符(null合并运算符)
$a=$_GET[‘a’]??1;
相当于$a = isset($_GET['a']) ? $_GET['a'] : 1;
我们知道三元运算符是可以这样用的:$a ?: 1但是这是建立在 $a 已经定义了的前提上。
新增的 ?? 运算符可以简化判断。
2、函数返回值类型说明
这个特性可以帮助我们避免一些 PHP 的隐式类型转换带来的问题。在定义一个函数之前就想好预期的结果可以避免一些不必要的错误。
不过这里也有一个特点需要注意。PHP 7 增加了一个 declare 指令:strict_types,既使用严格模式。
使用返回值类型声明时,如果没有声明为严格模式,如果返回值不是预期的类型,PHP 还是会对其进行强制类型转换。但是如果是严格模式,则会出发一个 TypeError 的 Fatal error。
严格模式:
<?php
declare(strict_types=1);
function foo($a) : int
{
return $a;
}
foo(1.0);
3、标量类型声明
Php7中函数的形参类型声明可以是标量了。
4、use批量声明
PHP 7 中 use 可以在一句话中声明多个类或函数或 const 了
use some/namespace/{ClassA, ClassB, ClassC as C};
use function some/namespace/{fn_a, fn_b, fn_c};
use const some/namespace/{ConstA, ConstB, ConstC};
5、再来简单说几个:
1、PHP 5.3 开始有了匿名函数,现在又有了匿名类了;
2、define 现在可以定义常量数组;
3、闭包( Closure)增加了一个 call 方法;
4、生成器(或者叫迭代器更合适)可以有一个最终返回值(return),也可以通过 yield from 的新语法进入一个另外一个生成器中(生成器委托)。
生成器的两个新特性(return 和 yield from)可以组合。具体的大家可以自行测试。