php7新特性

 1、前言php

  php7目前(截止2018-09-17),最新的稳定版本是7.2.10(http://php.net/downloads.php上可查看版本信息),目前还有很多项目是用5.6甚至更早的版本。相比于php5.x的版本,php7有很多新的改进,性能方面也是有很多提高。下面来详细讲下。数组

 

2、新特性php7

一、php7.0相比于php5.6的新特性dom

参考:http://php.net/manual/zh/migration70.new-features.php 下面所讲的内容都是来自于这篇文章,只是详细地解释。函数

 

1.1  标量类型声明oop

函数/方法中的参数,是能够加一个类型声明的,这个是php5.0就开始支持的,好比:性能

function testClass(类名 $c)优化

{url

}spa

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,

报错信息里面展现的是参数必须是boolean(类或接口)的一个实例,可是调用时传入的参数是boolean类型(true的类型)。有点绕,可是应该不难理解。

 

1.2 返回值类型声明

 

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

 【注意】在默认状况下,函数返回值若是和定义的不一致,会进行强制转换,在严格模式下,则会报错TypeError。

这个例子这里是强制转换了类型。

 函数返回值的说明参考:http://php.net/manual/zh/functions.returning-values.php#functions.returning-values.type-declaration

 

1.3 null合并运算符

 

 

1.4 太空船操做符(暂时不清楚这个操做符有什么实际用处,后续了解清楚再补充上)

 

 

 1.5 define容许定义常量数组

 咱们来看下define的声明,参考:http://php.net/manual/zh/function.define.php

 

这个新特性大概是为了丰富define的功能,const已经实现了这个功能了的。

 

1.6 匿名类

 

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

 

【备注】考虑到篇幅问题,先跳过中间几个我的以为不太经常使用的特性

 

 1.7 use分组命名空间

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

 

 

1.8 新增整数整除的函数intdiv()

返回值为整型。

参考:http://php.net/manual/zh/function.intdiv.php

 

1.9 新增的随机函数

参考:

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

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

 

 

二、php7.1相对于php7.0的新特性

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

涉及的内容很少,直接看上面的url便可。

 

三、php7.2相对于php7.1的新特性

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

涉及的内容很少,直接看上面的url便可。

相关文章
相关标签/搜索