当在函数中需要一组变量来完成计算时,最好是如下所示定义变量,如果变量是空的,则条件为'exit'吗?或者是更好的选择?
$type = $row['item_options']['purchased_type'];
if ( !$type ) { exit; }
$bf_required = 0;
$balance = 0;
$tour_id = $row['entry_id'];
if ( !$tour_id ) { exit; }
$places = $row['quantity'];
if ( !$places ) { exit; }
答案 0 :(得分:1)
如果您的应用程序需要设置值,那么最好的方法是依靠异常(这就是它们的用途)来表明出现问题。
例如:
$type = $row['item_options']['purchased_type'];
if (empty($type)) {
throw new Exception('Invalid type.');
}
您甚至可以创建扩展基础Exception
类的自定义异常,以便在捕获它们时可以适当地处理它们。在这种情况下,您可能会创建一个例外:
class InvalidInputException extends Exception {}
然后你可以专门抛出/捕获它。
答案 1 :(得分:0)
当在函数中需要一组变量来完成计算时,最好是如下所示定义变量,如果变量是空的,则条件为'exit'吗?或者是更好的选择?
首先,我在代码中看不到任何功能。如果所有参数都存在,函数本身就不应该打扰,因为它根本不是它的任务。事实上,如果省略强制参数,PHP会打你:
function doTheCalculations($arg1, $arg2) {
...
}
即
$x = doTheCalculations();
由代码调用此方法以确保它获得所需的所有数据,如果没有,则自行抱怨。所以你错了这个部分。
此代码也是错误的,除非$row['item_options']['purchased_type']
为boolean
:
$type = $row['item_options']['purchased_type'];
if ( !$type ) { exit; }
提示:清除您的支票 - 您要检查值 - >检查价值。你想检查类型?正确检查类型。你想检查它存在吗?使用isset()
,defined()
等
最后,如果你希望你的doTheCalculations()
方法告诉你它无法进行数学运算,因为有些东西超出允许范围或无效类型我会抛出Exception:
if (!is_int($arg1)) {
throw new \RuntimeException(".....");
}
或者,您可以使用array
(status
}和boolean
键(当result
为status
时)使您的方法始终返回true
)。如果需要,您可以添加更多字段。或者你可以做(但这更糟糕,我不推荐它,因为它根本不干净(即使很多PHP内置的函数都这样做),假设你的doTheCalculations()
预计会返回int
你如果无法进行计算,可以返回false
。但是,在这种方法中,你不知道为什么会发生这种情况,直到你也回到原因。