我可以使用PHP中的DRY原理分配一个变量并同时对其进行测试吗


Can I assign a variable and test it at the same time using DRY principles in PHP?

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

从GET或POST读取、验证和分配变量是很常见的,我正在努力找到最简洁的方法

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

if (isset($_GET['id']) && !empty($_GET['id'])) {
    if (is_numeric($_GET['id'])) {
        $var = $_GET['id'];
        // code
    }
}

我省略了各种"其他"条件,但你明白了。这里最明显的烦恼是必须键入$_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。

是的,我可以这样做,而且不干燥。是的,我可以用自定义函数来完成。我只是想知道我是否可以用这种方式,用一个小的、简洁的、DRY的、单一的语句来概括这一切。我一直在玩第三种说法,但仍然不完美和枯燥。

我正在使用如下三元运算符:

$var = empty($var) ? $default : $var;

关于:

$getVar=空($_GET['var'])?null:$_GET['var'];$var=(!is_null($getVar)&is_numeric($getVar))$getVar:false;

DR是的,我能拿到。(很抱歉没有格式化-我在手机上打字)