必需的变量,如果空的话退出的最佳方法?

时间:2016-07-28 19:13:42

标签: php

当在函数中需要一组变量来完成计算时,最好是如下所示定义变量,如果变量是空的,则条件为'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; }

2 个答案:

答案 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(".....");
}

或者,您可以使用arraystatus}和boolean键(当resultstatus时)使您的方法始终返回true )。如果需要,您可以添加更多字段。或者你可以做(​​但这更糟糕,我不推荐它,因为它根本不干净(即使很多PHP内置的函数都这样做),假设你的doTheCalculations()预计会返回int你如果无法进行计算,可以返回false。但是,在这种方法中,你不知道为什么会发生这种情况,直到你也回到原因。