nigirma
Новичок
Есть функция, в самом ее начале производится проверка входящего(их) значения.
Есть несколько вариантов проверок:
1)
2)
3)
4)
Для каждого есть свои минусы:
1) Неправильно обрабатывается если введена строковая переменная. Например если $num = 'gkhuimn' то проверка будет пройдена, т.к. при сравнении $num с числом, $num будет равна нулю...
2) Ужасная нечитабельная запись. Также теряется возможность задавать в качестве параметра параметры так: '2'. А иногда бывают случаи такого объявления, например через форму на сайте.
3) В несколько раз медленней чем первый вариант и имеет такую же ошибку как первый, т.ч. отметается 100%
4) Самый работающий без ошибок вариант, но медленней чем третий в 2 раза (примерно в 8-10 раз медленней чем первый вариант).
Посоветуйте какой вариант проверки значения выбрать или предложите свой.
Не маловажно быстродействие кода, не смотря даже на то что различия совсем небольшие
PHP:
/**
* Демонстрационная функция проверки входящих значений
*
* @param int $size Число от 0 до 3
*/
function demoCheckParam($num = 0) {
// ПРОВРКА $num
// код функции не интересующий нас сейчас
}
1)
PHP:
if (($num < 0) || ($num > 3)) {
$num = 0;
}
PHP:
if (($num !== 0) && ($num !== 1) && ($num !== 2) && ($num !== 3)) {
$num = 0;
}
PHP:
if (!in_array($num, $access)) {
$num = 0;
}
PHP:
if (!preg_match('/^([0-3])$/', $num)) {
$num = 0;
}
1) Неправильно обрабатывается если введена строковая переменная. Например если $num = 'gkhuimn' то проверка будет пройдена, т.к. при сравнении $num с числом, $num будет равна нулю...
2) Ужасная нечитабельная запись. Также теряется возможность задавать в качестве параметра параметры так: '2'. А иногда бывают случаи такого объявления, например через форму на сайте.
3) В несколько раз медленней чем первый вариант и имеет такую же ошибку как первый, т.ч. отметается 100%
4) Самый работающий без ошибок вариант, но медленней чем третий в 2 раза (примерно в 8-10 раз медленней чем первый вариант).
Посоветуйте какой вариант проверки значения выбрать или предложите свой.
Не маловажно быстродействие кода, не смотря даже на то что различия совсем небольшие