Есть много способов сделать это. Мой вопрос не в том, «как проверить переменные и назначить переменные». Вопрос в том, как я могу сделать это с наименьшим количеством кода и не повторять определенный текст.
Обычно нужно читать, проверять и назначать переменные из 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.
Да, я могу сделать это и не быть сухим. Да, я могу сделать это с помощью пользовательской функции. Мне просто интересно, могу ли я обернуть все это таким образом или нет, в маленьком, кратком, СУХОМ, единственном утверждении. Я играл с третичными заявлениями, но все еще не совершенен и СУХ.
Я делаю с троичным оператором, как показано ниже:
$var = empty($var) ? $default : $var;
Как насчет:
$ getVar = empty ($ _ GET [‘var’])? null: $ _GET [‘var’];
$ var = (! is_null ($ getVar) && is_numeric ($ GETVAR))? $ getVar: false;
СУХОЙ, я могу получить это.
(Извините за отсутствие форматирования — набираю с телефона)