我可以在PHP中使用DRY原则分配一个变量并同时测试它吗?
有很多方法可以做到这一点。我的问题不是“如何测试变量和分配变量”。问题是,我怎样才能用尽可能少的代码做到这一点,而不重复某些文本 通常需要从GET或POST读取、验证和分配变量,我正在尝试找到最简洁的方法 当我需要GET变量时,我通常使用ISSET和EMPTY来测试它。然后我可能会对数据类型做进一步的验证,最后将其分配给一个工作变量。例如:我可以在PHP中使用DRY原则分配一个变量并同时测试它吗?,php,dry,Php,Dry,有很多方法可以做到这一点。我的问题不是“如何测试变量和分配变量”。问题是,我怎样才能用尽可能少的代码做到这一点,而不重复某些文本 通常需要从GET或POST读取、验证和分配变量,我正在尝试找到最简洁的方法 当我需要GET变量时,我通常使用ISSET和EMPTY来测试它。然后我可能会对数据类型做进一步的验证,最后将其分配给一个工作变量。例如: if (isset($_GET['id']) && !empty($_GET['id'])) { if (is_numeric($_
if (isset($_GET['id']) && !empty($_GET['id'])) {
if (is_numeric($_GET['id'])) {
$var = $_GET['id'];
// code
}
}
我省略了各种“其他”条件,但你明白了。这里最明显的麻烦是必须键入$\u GET['id']
4次。另一个是必须在一个2级if块中完成所有代码
我的问题是,我能以一种更干练的方式完成所有的测试、验证和作业吗?类似这样的伪代码:
if ($var = isset(!empty(is_numeric($_GET['id']))) {
// $var is now equal to $_GET['id'];
} else {
// failed all tests, $var is equal to false;
}
假设GET通过了三个测试,$var将被分配GET的实际值,而不是true/false
是的,我可以做到这一点,而不是干。是的,我可以用自定义函数来实现。我只是想知道我是否能用一个简短、干练、单一的陈述来概括这一切。我一直在玩三级语句,但仍然不完美和枯燥。我正在使用三级运算符,如下所示:
$var = empty($var) ? $default : $var;
那么:
$getVar=empty($\u GET['var'])?null:$\u GET['var'];
$var=(!is_null($getVar)&&is_numeric($getVar))$getVar:false
我能弄到的最干的。
(很抱歉缺少格式设置-我在电话中输入)FYI:
!empty
“包括”isset
。您应该查看@Cbroe。由于一些可能的错误条件,例如复选框,我一直被告知在表单验证中同时使用isset()和empty()。这个建议过时了吗?由于这两个函数的测试略有不同,因此您必须使用这两个函数来覆盖所有情况。您可以安全地使用!空
仅在这种情况下,即它不会在case变量、key或property与isset
不存在时抛出任何错误。