参数以及返回值的类型现在可以通过在类型前加上一个问号使之允许为空。当启用这个特性时,传入的参数或者函数返回的结果要么是给定的类型,要么是null
#php5
function($a = null){
if($a===null) {
return null;
}
return $a;
}
#php7+
function fun() :?string
{
return null;
}
function fun1(?$a)
{
var_dump($a);
}
fun1(null);//null
fun1('1');//1
返回值声明为 void 类型的方法要么干脆省去 return 语句。对于 void来说,NULL 不是一个合法的返回值。
function fun() :void
{
echo "hello world";
}
class Something
{
const PUBLIC_CONST_A = 1;
public const PUBLIC_CONST_B = 2;
protected const PROTECTED_CONST = 3;
private const PRIVATE_CONST = 4;
}
这可以被用在参数或者返回值类型中,它代表接受数组或者实现了Traversable接口的对象.
function iterator(iterable $iter)
{
foreach ($iter as $val) {
//
}
}
一个catch语句块现在可以通过管道字符(|)来实现多个异常的捕获。 这对于需要同时处理来自不同类的不同异常时很有用
try {
// some code
} catch (FirstException | SecondException $e) {
// handle first and second exceptions
}
$data = [
["id" => 1, "name" => 'Tom'],
["id" => 2, "name" => 'Fred'],
];
// list() style
list("id" => $id1, "name" => $name1) = $data[0];
var_dump($id1);//1
$a= "hello";
$a[-2];//l
Closure新增了一个静态方法,用于将callable快速地 转为一个Closure 对象。
<?php
class Test
{
public function exposeFunction()
{
return Closure::fromCallable([$this, 'privateFunction']);
}
private function privateFunction($param)
{
var_dump($param);
}
}
$privFunc = (new Test)->exposeFunction();
$privFunc('some value');
对http2服务器推送的支持现在已经被加入到 CURL 扩展
过去我们传递参数过少 会产生warning。php7.1开始会抛出error
内容来自网络,PHPer技术栈收集,如有侵权,请告知。