我有一个填充对象的函数。
public static function populateObj($data) {
$obj = new Obj();
$obj->setVal1($data['val1']);
$obj->setVal2($data['val2']);
$obj->setId($data['id']);
return $obj;
}
如果所有值都带有参数$data
则工作正常。但是,如果缺少某些内容,则会引发错误。
有没有比这更短、更简单或更好的方法来null
设置为默认值:
$data['val1'] ? $obj->setVal1($data['val1']) : $obj->setVal1(null);
...
您可以与默认数组合并,然后$data
将包含所有这些键:
$data = array_merge(['val1'=>null, 'val2'=>null, 'id'=>null], $data);
在 PHP>= 7.0 中,您可以使用空合并运算符:
$obj->setVal1($data['val1'] ?? null);
这可能是最快(键入最少的单词(的方法。 另一个可能更快,如果值得的话,是用default values
创建一个类和一个构造函数。 带array_merge()
array_pad()
也可能值得一看,具体取决于您的应用。
在 PHP 7+ 中,您可以使用??
又名空合并
$obj->setVal1($data['val1']??null);
$obj->setVal2($data['val2']??null);
$obj->setId($data['id']??null);
在此处查看示例
空合并运算符 (??( 已被添加(在 PHP7 中(作为语法糖,用于需要将三元与 isset(( 结合使用的常见情况。如果它存在且不是 NULL,则返回其第一个操作数;否则,它将返回其第二个操作数。