php7已经发布有段时间了,查了下正式版本的发布时间是2015年底,至于具体的新特性,在这里总结一下。

标量类型声明

php7新增了4种类型, 字符串(string), 整数 (int), 浮点数 (float), 以及布尔值 (bool)。

php7+新特性-LMLPHP

举个例子:

php7+新特性-LMLPHP

上述能正常输出结果5,如果改为如下,把参数3改成字符串

php7+新特性-LMLPHP

就会报错PHP Fatal error:  Uncaught TypeError: Argument 2 passed to sumOfInts() must be of the type integer, string given

返回值类型声明

PHP 7 增加了对返回类型声明的支持。 类似于参数类型声明,返回类型声明指明了函数返回值的类型。可用的类型与参数声明中可用的类型相同

举个例子:

php7+新特性-LMLPHP

上述代码输出结果如下:

Array
(
[0] => 1
[1] => 3
[2] => 2
[3] => 4
)

null合并运算符

由于日常使用中存在大量同时使用三元表达式和 isset()的情况, 我们添加了null合并运算符 (??) 这个语法糖。如果变量存在且值不为NULL, 它就会返回自身的值,否则返回它的第二个操作数。

举个例子:

php7+新特性-LMLPHP

上述输出 nobody

太空船操作符

太空船操作符用于比较两个表达式。当小于、等于或大于时它分别返回-1、0或1,相当于java的compare函数

php7+新特性-LMLPHP

通过 define定义常量数组

Array 类型的常量现在可以通过 define() 来定义。在 PHP5.6 中仅能通过 const 定义

php7+新特性-LMLPHP

Group use declarations

从同一 namespace 导入的类、函数和常量现在可以通过单个 use 语句 一次性导入了

<?php

// PHP 7 之前的代码
use some\namespace\ClassA;
use some\namespace\ClassB;
use some\namespace\ClassC as C; use function some\namespace\fn_a;
use function some\namespace\fn_b;
use function some\namespace\fn_c; use const some\namespace\ConstA;
use const some\namespace\ConstB;
use const some\namespace\ConstC; // PHP 7+ 及更高版本的代码
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};
?>

其他7.0版本的新特性具体可见 http://php.net/manual/zh/migration70.new-features.php

php7.1的新特性

http://php.net/manual/zh/migration71.new-features.php

php7.2的新特性

http://php.net/manual/zh/migration72.new-features.php

php7.3的新特性

http://php.net/manual/zh/migration73.new-features.php

05-11 22:23