当GET参数不存在时,默认值的不同(或首选)方法

时间:2015-07-09 09:49:21

标签: php syntax default-value

这个问题特别是因为有更整洁的代码。

我想知道什么是默认值的所有不同方法,因为我有一个API控制器默认所有未设置的参数,所以我想选择一个最漂亮和/或最直观的参数。

此外,对于更有经验的程序员来说,有哪些约定或首选方式?

我的案例的注释是我的变量名称与GET参数值的名称不同。因此,在我的示例中,this_is_a_very_long_parameter_name GET参数存储在$longParameterName变量中,short GET参数存储在$val变量中。

在我的例子中有2个变量,在现实世界中将有5到10个变量。

1

if(isset($_GET['short'])) {
    $val = $_GET['short'];
} else {
    $val = 'default1';
}

if(isset($_GET['this_is_a_very_long_parameter_name'])) {
    $longParameterName = $_GET['this_is_a_very_long_parameter_name'];
} else {
    $longParameterName = 'default2';
}

2

$val = 'default1';
if(isset($_GET['short'])) {
    $val = $_GET['short'];
}

$longParameterName = 'default2';
if(isset($_GET['this_is_a_very_long_parameter_name'])) {
    $longParameterName = $_GET['this_is_a_very_long_parameter_name'];
}

3

$val = (isset($_GET['short'])) ? $_GET['short'] : 'default1';
$longParameterName = (isset($_GET['this_is_a_very_long_parameter_name'])) ? $_GET['this_is_a_very_long_parameter_name'] : 'default2';

4

要求我更改错误报告设置:(

$val = $_GET['short'] ?: 'default1';
$longParameterName = $_GET['this_is_a_very_long_parameter_name'] ?: 'default2';

5

$val = 'default1';
$longParameterName = 'default2';

$parameters = [
    'short' => 'val', 
    'this_is_a_very_long_parameter_name' => 'longParameterName'
];
foreach($parameters as $getParam => $varName) {
    if((isset($_GET[$getParam]))) {
        $$varName = $_GET[$getParam];
    }
}

1 个答案:

答案 0 :(得分:2)

如果你有10个变量,你会遇到的问题是什么?你的代码只有初始化这些变量的4X10行(我不是在谈论每次检查之间的额外行,以确保你的代码是可读的。

我会使用专门的功能为您完成工作:

function get_or_default($var, $default) {
    if (isset($_GET[$var])) {
        return $_GET[$var];
    }
    return $default;
}

$val1 = get_or_default('val1', 'default1');
$val2 = get_or_default('val2', 'default2');