Могу ли я назначить переменную и одновременно протестировать ее, используя принципы DRY в 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 раза. Еще один — делать весь мой код в двухуровневом блоке 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.

Да, я могу сделать это и не быть сухим. Да, я могу сделать это с помощью пользовательской функции. Мне просто интересно, могу ли я обернуть все это таким образом или нет, в маленьком, кратком, СУХОМ, единственном утверждении. Я играл с третичными заявлениями, но все еще не совершенен и СУХ.

0

Решение

Я делаю с троичным оператором, как показано ниже:

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

Другие решения

Как насчет:

$ getVar = empty ($ _ GET [‘var’])? null: $ _GET [‘var’];
$ var = (! is_null ($ getVar) && is_numeric ($ GETVAR))? $ getVar: false;

СУХОЙ, я могу получить это.
(Извините за отсутствие форматирования — набираю с телефона)

0

По вопросам рекламы [email protected]