我的所有类方法几乎都以相同的方式开始,方法是检查传递的参数是否为空(我期望布尔值和int-0的位置不同)
是否有较少重复的值检查方法?
public function updateproduct($product, $storeid) {
if ( empty($product) || empty($storeid) ) {
return false;
}
// do stuff
}
答案 0 :(得分:1)
使用func_num_args
遍历func_get_args
返回的arg值数组是完成您要执行的操作的一种方法
function foo($numargs, $arg_list) {
for ($i = 0; $i < $numargs; $i++) {
if (empty($arg_list[i])) {
return false;
}
}
return true;
}
function bar($arg1, $arg2) {
if (!foo(func_num_args(), func_get_args())) {
//...
}
}
bar('baz', null);
答案 1 :(得分:1)
此函数进行测试以查看传递给它的任何参数是否为空。好处是简单。缺点是,如果找到空值,它不会短路。
我想,如果您注意到它没有短路的影响,那么您将向函数发送太多参数。
function anyEmpty(...$args){
return array_filter($args) !== $args;
}
然后我们在updateProduct函数中的用法:
function updateProduct($product, $storeId){
if (anyEmpty($product, $storeId)) {
return False;
}
//do your stuff
return True;
}
或者,如果您希望动态指定参数,则:
if (anyEmpty(...func_get_args())) {
return False;
}