可选的类型可变参数

时间:2018-01-22 20:27:59

标签: php

自5.6版本以来,PHP已variadic argument unpacking

function doSomething(User ...$users) {
     return count($users);
}
$userOrNoUserList = [$user1, null, $user2];
doSomething(...$userOrNoUserList); // wanted: 3

这会引发以下错误:

  

捕获致命错误:传递给doSomething()的参数2必须是user的实例,null

但我想保留doSomething()内的列表结构;我不想在调用之前过滤null值。是否也可以允许null值?

1 个答案:

答案 0 :(得分:4)

您必须在类型?之前使用User字符定义Nullable Type(在PHP 7.1.0中可用):

function doSomething(?User ...$users) {
     return count($users);
}

然后你可以打电话:

$userOrNoUserList = [$user1, null, $user3];
doSomething(...$userOrNoUserList); // 3