PHP 7.1新特性的汇总介绍新特性的汇总介绍
大家都知道PHP 7.1 release版本发布在即,所以这篇文章就给大家整理一下7.1中的一些新特性以供了解。所有
内容均选自官方 RFC 文档。有需要的朋友们可以参考借鉴,下面来跟着小编一起学习学习吧。
一、可空类型一、可空类型
可空类型主要用于参数类型声明和函数返回值声明。
主要的两种形式如下:主要的两种形式如下:
<?php
function answer(): ?int {
return null; //ok
}
function answer(): ?int {
return 42; // ok
}
function say(?string $msg) {
if ($msg) {
echo $msg;
}
}
从例子很容易理解,所指的就是通过 ? 的形式表明函数参数或者返回值的类型要么为指定类型,要么为 null。
此方法也可用于接口函数的定义:此方法也可用于接口函数的定义:
<?php
interface Fooable {
function foo(?Fooable $f);
}
但有一个需要注意的地方:如果函数本身定义了参数类型并且没有默认值,即使是可空的,也不能省略,否则会触发错误。如
下:
<?php
function foo_nullable(?Bar $bar) {}
foo_nullable(new Bar); // 可行
foo_nullable(null); // 可行
foo_nullable(); // 不可行
但是如果以上函数的参数定义为 ?Bar $bar = null 的形式,则第三种写法也是可行的。因为 = null 实际上相当于 ? 的超集,对于可
空类型的参数,可以设定 null 为默认值。
二、二、list 的方括号简写的方括号简写
我们知道在 PHP5.4 之前只能通过 array() 来定义数组,5.4之后添加了 [] 的简化写法(省略了5个字符还是很实在的)。
<?php
// 5.4 之前
$array = array(1, 2, 3);
$array = array("a" => 1, "b" => 2, "c" => 3);
// 5.4 及之后
$array = [1, 2, 3];
$array = ["a" => 1, "b" => 2, "c" => 3];
引申到另外一个问题上,如果我们要把数组的值赋值给不同的变量,可以通过 list 来实现:
<?php
list($a, $b, $c) = $array;
是否也可以通过 [] 的简写来实现呢?
<?php
[$a, $b, $c] = $array;
以及下一个特性中会提到的 list 指定 key:
<?php
["a" => $a, "b" => $b, "c" => $c] = $array;