看看下面的Java代码:
public int birdy(List<Bird> birds) {
birds.get(0).twitter();
return birds.size();
}
如果您传递了一个空头清单,编译器会抱怨,这是有道理的,因为空头不能鸣叫。我在PHP中也有类似情况:
function create(string $notes, array $options = []): bool {
// ...
}
$options
中的每个元素都必须是Option
类的实例。当然,我的第一个想法是像在Java中那样使用泛型-2016年似乎有一个RFC尚未实现或批准:https://wiki.php.net/rfc/generics
因此,我想知道是否有比这更好的方法了?
function create(string $notes, array $options = []): bool {
foreach($options as $option) {
if(!($option instanceof Option)) {
throw new Exception("Wrong type for option");
}
}
// ...
}
因为这很笨拙。