PHP 7.1新特性的汇总介绍
一、可空类型
可空类型主要用于参数类型声明和函数返回值声明。
主要的两种形式如下:
<?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]; |
PHP7.1 实现了这个特性。但是要注意的是:出现在左值中的 [] 并不是数组的简写,是 list()
的简写。
但是并不仅仅如此,新的 list()
的实现并不仅仅可以出现在左值中,也能在 foreach
循环中使用
<?php foreach ($points as ["x" => $x, "y" => $y]) { var_dump($x, $y); } |
list()
和 [] 不能相互嵌套使用:
<?php // 不合法 list([$a, $b], [$c, $d]) = [[1, 2], [3, 4]]; // 不合法 [list($a, $b), list($c, $d)] = [[1, 2], [3, 4]]; // 合法 [[$a, $b], [$c, $d]] = [[1, 2], [3, 4]]; |
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者使用PHP7.1能有一定的帮助,如果有疑问大家可以留言交流。