【转载】PHP7 新特性

转自:参考:http://cn.bing.com/?mkt=zh-CN

PHP7.0 新特性

性能提升:PHP 7 的速度是 PHP 5.6 的两倍

标量类型和返回值类型声明

标量类型

函数、方法中的参数是可以加一个类型声明的,这是php5.0就开始支持的。
例如:

function testClass(类名 $c)
{
}

function testArray(array $a)
{
}

php5.x支持的这个类型不多,php7增加了几个:

参考:http://php.net/manual/zh/functions.arguments.php#functions.arguments.type-declaration

这里的意思是,方法的参数的类型,只支持上面列出的这些类型,如果是其他类型,php5报错致命错误,php7会报错TypeError的异常。

举个例子:

function test (boolean $b)

{
}
test(true);

执行结果:

 Fatal error: Uncaught TypeError: Argument 1 passed to test() must be an instance of boolean, boolean given, called in - on line 1 and defined in -:1

这里报错的原因是参数类型boolean不是一个合法的类型,上面截图中可以看到是bool才对,不能用boolean。这里有点不好理解,就是我们大多会认为boolean就是bool,所以这里应该是规定好的,就是只能用bool,不能用boolean。

同理,用 integer 也是错的,要用 int。 float 是包含了 float和 double 的,如果用 double 也是会报错的。再解释下,用 boolean 的时候,因为不是 bool,也不是 int、float、self、array 等,所以这个 boolean 会被认为是 class或者 interface。

返回值类型


返回值的类型,跟参数的类型一致。

在默认情况下,函数返回值如果和定义的不一致,会进行强制转换,在严格模式下,则会报错TypeError。

null 合并运算符

太空船操作符

define 允许定义常量数组


define 的声明,参考:http://php.net/manual/zh/function.define.php

匿名类

匿名类参考:http://php.net/manual/zh/language.oop5.anonymous.php

use 分组命名空间

这里可以用一行代码引入同一个命名空间下的多个类,而不是之前那样需要每个类一行代码,算是一种优化。

整数整除的函数intdiv()

返回值为整型。
参考:http://php.net/manual/zh/function.intdiv.php

新增随机函数

参考:
http://php.net/manual/zh/function.random-bytes.php
http://php.net/manual/zh/function.random-int.php

PHP7.1~PHP7.4 新特性

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

点赞

发表回复

电子邮件地址不会被公开。必填项已用 * 标注