我正在尝试理解从声明中返回false的主要区别,而不是回应促使用户更正其提交的错误。
让我们使用以下函数来获取Google货币转换API网址并解析另外3个参数$amount, $from, $to
。我使用explode
来获取API在""
内返回的数值。
function currency_convert($googleCurrencyApi, $amount, $from, $to) {
$result = file_get_contents($googleCurrencyApi . $amount . $from . '=?' . $to);
$expl = explode('"', $result);
if ($expl[1] == '' || $expl[3] == '') {
return false;
} else {
return array(
$expl[1],
$expl[3]
);
}
}
如果声明为真,与回显建设性消息相比,返回false的优点是什么?我看到许多论坛等经常使用的返回false。
提前致谢。
答案 0 :(得分:5)
我们都在2012年,抛出异常并以任何你想要的方式处理它。
function currency_convert($googleCurrencyApi, $amount, $from, $to) {
$result = file_get_contents($googleCurrencyApi . $amount . $from . '=?' . $to);
$expl = explode('"', $result);
if ($expl[1] == '' || $expl[3] == '') {
throw new Exception('An error has occured. Describe the error here');
}
return array(
$expl[1],
$expl[3]
);
}
比,当你调用函数时:
try { currency_convert($googleApi, $amount, $from, $to) }
catch (Exception $e) { /* Do whatever you want with $e */ }
<强> Read about Exceptions and the try, catch block here 强>
return false
。例外是其类可以扩展的对象,因此您可以有效地创建多种类型的错误和异常,例如但不限于:{{1 }},IllegalArgumentException
,MathException
,FileReadException
,然后以不同的方式处理
ReallyAwesomeException
答案 1 :(得分:1)
一方面没有优势,这完全取决于你如何构建代码。您可以将false返回到显示错误的客户端方法。
关于你对返回值的处理方式。如果为false,则显示“failed”,否则为“success”。
答案 2 :(得分:1)
为什么呢?这是因为:
答案 3 :(得分:1)
函数/方法只应输出任何内容,如果它们已经是它们的用途。举个例子:
为:
function showSomething($something) {
$something = doSomething($something);
echo $something;
}
function doSomething($something) {
if (empty($something)) {
echo 'ERROR!';
}
return $something;
}
好:
function showSomething($something) {
$something = doSomething($something);
if ($something === FALSE) {
echo 'ERROR!';
} else {
echo $something;
}
}
function doSomething($something) {
if (empty($something)) {
return FALSE;
}
return $something;
}