PHP 7.1中有哪些新的特性?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
成都地区优秀IDC服务器托管提供商(创新互联).为客户提供专业的温江服务器托管,四川各地服务器托管,温江服务器托管、多线服务器托管.托管咨询专线:18982081108一、可空类型
可空类型主要用于参数类型声明和函数返回值声明。
主要的两种形式如下:
从例子很容易理解,所指的就是通过 ? 的形式表明函数参数或者返回值的类型要么为指定类型,要么为 null。
此方法也可用于接口函数的定义:
但有一个需要注意的地方:如果函数本身定义了参数类型并且没有默认值,即使是可空的,也不能省略,否则会触发错误。如下:
但是如果以上函数的参数定义为 ?
Bar $bar = null
的形式,则第三种写法也是可行的。因为= null
实际上相当于 ? 的超集,对于可空类型的参数,可以设定 null 为默认值。二、list 的方括号简写
我们知道在 PHP5.4 之前只能通过
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;PHP7.1 实现了这个特性。但是要注意的是:出现在左值中的 [] 并不是数组的简写,是
list()
的简写。但是并不仅仅如此,新的
list()
的实现并不仅仅可以出现在左值中,也能在foreach
循环中使用:$x, "y" => $y]) { var_dump($x, $y); }不过因为实现的问题,
list()
和 [] 不能相互嵌套使用:三、允许在 list 中指定 key
上文提到过,新的
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 返回类型
PHP7.0 添加了指定函数返回类型的特性,但是返回类型却不能指定为
void
,7.1 的这个特性算是一个补充:以下两种情况都可以通过验证:
定义返回类型为
void
的函数不能有返回值,即使返回null
也不行:此外
void
也只适用于返回类型,并不能用于参数类型声明,或者会触发错误:类函数中对于返回类型的声明也不能被子类覆盖,否则会触发错误:
五、类常量属性设定
这个特性说起来比较简单,就是现在类中的常量支持使用
public
、private
和protected
修饰了:此外,接口(
interface
)中的常量只能是public
属性:为了应对变化,反射类的实现也相应的丰富了一下,增加了
getReflectionConstant
和getReflectionConstants
两个方法用于获取常量的额外属性:getReflectionConstant( "TEST_CONST" ); $consts = $obj->getReflectionConstants();六、多条件 catch
在以往的
try ... catch
语句中,每个catch
只能设定一个条件判断:新的实现中可以在一个
catch
中设置多个条件,相当于或的形式判断:关于PHP 7.1中有哪些新的特性问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。
分享文章:PHP7.1中有哪些新的特性-创新互联
URL网址:http://kswsj.cn/article/dpiisg.html