转自:参考: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