在php中,我应该在通常返回数组的方法中返回false,null还是空数组?
2022-08-30 18:04:12
我发现了一些对此的回应,但没有一个与PHP(这是一种非常弱的类型语言)有关:
关于PHP,在通常返回数组但发生故障的方法中返回false,null或空数组是否合适?
换句话说,如果另一个开发人员加入我的项目,他们希望看到什么?
我发现了一些对此的回应,但没有一个与PHP(这是一种非常弱的类型语言)有关:
关于PHP,在通常返回数组但发生故障的方法中返回false,null或空数组是否合适?
换句话说,如果另一个开发人员加入我的项目,他们希望看到什么?
数组是事物的集合。一个空数组将发出信号,表明“一切顺利,只是该集合中没有任何内容”。如果您确实想要发出错误信号,则应返回 。由于 PHP 是动态类型的,因此很容易严格或松散地检查返回值,具体取决于您的需求:false
$result = getCollection();
if (!$result) // $result was false or empty, either way nothing useful
if ($result === false) // an actual error occurred
if ($result) // we have an array with content
在特殊情况下,错误报告也有例外。这实际上取决于函数的责任和错误的严重性。如果函数的作用允许响应“空集合”和“nope”相等,则上述操作可能没问题。但是,如果根据定义,函数必须始终返回集合(即使它为空),并且在某些情况下不能,则引发异常可能比返回更合适。false
我强烈建议不要返回混合类型返回值。我认为这是一个很大的问题,以至于我写了一篇关于不返回混合类型值的小文章。
要回答您的问题,请返回一个空数组。您可以在下面找到一个小示例,为什么返回其他值会导致问题:
// This kind of mixed-typed return value (boolean or string),
// can lead to unreliable code!
function precariousCheckEmail($input)
{
if (filter_var($input, FILTER_VALIDATE_EMAIL))
return true;
else
return 'E-Mail address is invalid.';
}
// All this checks will wrongly accept the email as valid!
$result = precariousCheckEmail('nonsense');
if ($result == true)
print('OK'); // -> OK will be given out
if ($result)
print('OK'); // -> OK will be given out
if ($result === false)
print($result);
else
print('OK'); // -> OK will be given out
if ($result == false)
print($result);
else
print('OK'); // -> OK will be given out
希望这有助于防止一些误解。