自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
值?
答案 0 :(得分:4)
您必须在类型?
之前使用User
字符定义Nullable Type(在PHP 7.1.0中可用):
function doSomething(?User ...$users) {
return count($users);
}
然后你可以打电话:
$userOrNoUserList = [$user1, null, $user3];
doSomething(...$userOrNoUserList); // 3