PHP 7.1新特性的汇总介绍
php  /  管理员 发布于 4年前   220
一、可空类型 可空类型主要用于参数类型声明和函数返回值声明。 主要的两种形式如下: 从例子很容易理解,所指的就是通过 ? 的形式表明函数参数或者返回值的类型要么为指定类型,要么为 null。 此方法也可用于接口函数的定义: 但有一个需要注意的地方:如果函数本身定义了参数类型并且没有默认值,即使是可空的,也不能省略,否则会触发错误。如下: 但是如果以上函数的参数定义为 ? 二、list 的方括号简写 我们知道在 PHP5.4 之前只能通过 引申到另外一个问题上,如果我们要把数组的值赋值给不同的变量,可以通过 是否也可以通过 [] 的简写来实现呢? 以及下一个特性中会提到的 PHP7.1 实现了这个特性。但是要注意的是:出现在左值中的 [] 并不是数组的简写,是 但是并不仅仅如此,新的 不过因为实现的问题, 三、允许在 list 中指定 key 上文提到过,新的 这也就相当于: 和以往的区别在于以往的 会得到 而新的实现则可以通过以下方式来调整赋值: 不同于数组的是, 更复杂的情况, 以及循环中使用: 四、void 返回类型 PHP7.0 添加了指定函数返回类型的特性,但是返回类型却不能指定为 以下两种情况都可以通过验证: 定义返回类型为 此外 类函数中对于返回类型的声明也不能被子类覆盖,否则会触发错误: 五、类常量属性设定 这个特性说起来比较简单,就是现在类中的常量支持使用 此外,接口( 为了应对变化,反射类的实现也相应的丰富了一下,增加了 六、多条件 catch 在以往的 新的实现中可以在一个 对于异常的处理简化了一些。 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者使用PHP7.1能有一定的帮助,如果有疑问大家可以留言交流。 附:源 RFC 地址 Nullable TypesBar $bar = null
的形式,则第三种写法也是可行的。因为 = null
实际上相当于 ? 的超集,对于可空类型的参数,可以设定 null 为默认值。 array()
来定义数组,5.4之后添加了 [] 的简化写法(省略了5个字符还是很实在的)。 1, "b" => 2, "c" => 3);// 5.4 及之后$array = [1, 2, 3];$array = ["a" => 1, "b" => 2, "c" => 3];
list
来实现:list
指定 key
: $a, "b" => $b, "c" => $c] = $array;
list()
的简写。list()
的实现并不仅仅可以出现在左值中,也能在 foreach
循环中使用: $x, "y" => $y]) { var_dump($x, $y);}
list()
和 [] 不能相互嵌套使用:list()
的实现中可以指定key: 1, "b" => 2, "c" => 3];["a" => $a, "b" => $b, "c" => $c] = $array;
list()
的实现相当于 key 只能是 0, 1, 2, 3 的数字形式并且不能调整顺序。执行以下语句: '1', 2 => '2'];
PHP error: Undefined offset: 0...
的错误。 $a, 2 => $b) = [1 => '1', 2 => '2'];
list
并不支持混合形式的 key
,以下写法会触发解析错误: $keyed) = $array;
list
也支持复合形式的解析: 1, "y" => 2], ["x" => 2, "y" => 1]];list(list("x" => $x1, "y" => $y1), list("x" => $x2, "y" => $y2)) = $points;$points = [ "first" => [1, 2], "second" => [2, 1]];list("first" => list($x1, $y1), "second" => list($x2, $y2)) = $points;
1, "y" => 2], ["x" => 2, "y" => 1]];foreach ($points as list("x" => $x, "y" => $y)) { echo "Point at ($x, $y)", PHP_EOL;}
void
,7.1 的这个特性算是一个补充:void
的函数不能有返回值,即使返回 null
也不行:void
也只适用于返回类型,并不能用于参数类型声明,或者会触发错误:public
、private
和 protected
修饰了:interface
)中的常量只能是 public
属性:getReflectionConstant
和 getReflectionConstants
两个方法用于获取常量的额外属性:getReflectionConstant( "TEST_CONST" );$consts = $obj->getReflectionConstants();
try ... catch
语句中,每个 catch
只能设定一个条件判断:catch
中设置多个条件,相当于或的形式判断:
Square bracket syntax for array destructuring assignment
Allow specifying keys in list()
Generalize support of negative string offsets
Void Return Type
Class constant visibility modifiers
Multi catch您可能感兴趣的文章:
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号