php7+新特性

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

标量类型声明

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

 

举个例子:

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

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

 

返回值类型声明

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

举个例子:

 上述代码输出结果如下:

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

null合并运算符

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

举个例子:

 

上述输出 nobody

太空船操作符

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

 

通过 define定义常量数组 

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

 

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

posted @ 2018-12-25 15:52  枯木逢春  阅读(448)  评论(0编辑  收藏  举报