检查空函数参数的更好方法

时间:2018-06-20 22:55:10

标签: php function methods is-empty

我的所有类方法几乎都以相同的方式开始,方法是检查传递的参数是否为空(我期望布尔值和int-0的位置不同)

是否有较少重复的值检查方法?

public function updateproduct($product, $storeid) {
    if ( empty($product) || empty($storeid) ) {
        return false;
    }

    // do stuff

}

2 个答案:

答案 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;
  }