我可以在PHP中使用DRY原则分配一个变量并同时测试它吗?

我可以在PHP中使用DRY原则分配一个变量并同时测试它吗?,php,dry,Php,Dry,有很多方法可以做到这一点。我的问题不是“如何测试变量和分配变量”。问题是,我怎样才能用尽可能少的代码做到这一点,而不重复某些文本 通常需要从GET或POST读取、验证和分配变量,我正在尝试找到最简洁的方法 当我需要GET变量时,我通常使用ISSET和EMPTY来测试它。然后我可能会对数据类型做进一步的验证,最后将其分配给一个工作变量。例如: if (isset($_GET['id']) && !empty($_GET['id'])) { if (is_numeric($_

有很多方法可以做到这一点。我的问题不是“如何测试变量和分配变量”。问题是,我怎样才能用尽可能少的代码做到这一点,而不重复某些文本

通常需要从GET或POST读取、验证和分配变量,我正在尝试找到最简洁的方法

当我需要GET变量时,我通常使用ISSET和EMPTY来测试它。然后我可能会对数据类型做进一步的验证,最后将其分配给一个工作变量。例如:

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
不存在时抛出任何错误。