[英]Declaring an optional array argument
我想知道将默认数组值设置为空数组或NULL时是否有任何区别。
例如:
function arrayTest(array $array = array()) {
if(!empty($array)) {
// Do something
}
}
要么
function arrayTest(array $array = NULL) {
if(!empty($array)) {
// Do something
}
}
我注意到的是第一个示例不允许传递NULL值,第二个示例因为类型转换而传递。
还有其他差异吗? 应该使用哪一个?
另一个区别是,如果你没有传递一个参数,它将默认为array()
或null
,这是两个非常不同的值。 您当然可以检查,但是您需要考虑它。 empty
对两者都有效,但是null
的foreach循环不能很好地工作,各种数组函数也会失败。
您注意到的是正确的:只有在声明中添加= null
才能为typehinted参数传递null
。 这不仅适用于数组,也适用于对象。 在PHP中,PHP无法创建一个强制的类型化参数,但可以为null。 只要在声明中添加=null
,就可以传递null
但也可以省略参数。
如果你在空数组或null之间没有逻辑上的区别,我会选择第一种默认为空数组的方法。 那么至少你会知道输入总是一个数组。 我认为这增加了函数实现者和使用它的程序员的清晰度。 但我想这只是一种意见,甚至不是一种强烈意见。
我的主要建议是不要让论证成为可选的。 根据我的经验,这将使这些函数的使用不清楚,特别是随着代码的增长和更多的参数的添加。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.