当 GET 参数不存在时默认值的不同(或首选)方式
Different (or preferred) ways of defaulting a value when GET parameter does not exist
这个问题是专门为了让代码更整洁的原因。
我想知道默认值的所有不同方式是什么,因为我有一个 API 控制器,它默认所有未设置的参数,所以我想选择一个最漂亮的 and/or 最直观。
此外,请问更有经验的程序员,执行此操作的惯例或首选方法是什么?
我的情况需要注意的是,我的变量名称与 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];
}
}
你会遇到的问题是如果你有 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');
这个问题是专门为了让代码更整洁的原因。
我想知道默认值的所有不同方式是什么,因为我有一个 API 控制器,它默认所有未设置的参数,所以我想选择一个最漂亮的 and/or 最直观。
此外,请问更有经验的程序员,执行此操作的惯例或首选方法是什么?
我的情况需要注意的是,我的变量名称与 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];
}
}
你会遇到的问题是如果你有 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');