nigirma
Новичок
Есть в самописном валидаторе функция сравнения, которую очень хочется оптимизировать.
1) Не хотелось бы использовать case - будет больше кода
2) объединение
в
будет только хуже, т.к. если $data != $comparison то проверка по if'ам вниз пойдет дальше, что уже не даст результата совпадения $operator.
Какие будут варианты оптимизации?? Или все так хорошо?
PHP:
/**
* Сравнение значения со значением другого
*
* data string|number Сравниваемое значение
* value string|number Значение для сравнения
* operator string Оператор, используемый при сравнении
* message string Текст сообщения при ошибке
*/
function compare($data, $comparison, $operator = '==', $message = '') {
if ($operator == '==') {
if ($data == $comparison) {
$compareError = true;
}
} else if (($operator == '!=') || ($operator == '<>')) {
if ($data != $comparison) {
$compareError = true;
}
} else if ($operator == '<=') {
if ($data <= $comparison) {
$compareError = true;
}
} else if ($operator == '>=') {
if ($data >= $comparison) {
$compareError = true;
}
} else if ($operator == '<') {
if ($data < $comparison) {
$compareError = true;
}
} else if ($operator == '>') {
if ($data > $comparison) {
$compareError = true;
}
}
return (isset($compareError)) ? true : $message;
}
// Проверка функции
echo compare(5, 4, '==', 'Числа не равны') . '<br>';
echo compare(5, 5, '==', 'Числа не равны');
2) объединение
PHP:
if ($operator == '==') {
if ($data == $comparison) {
$compareError = true;
}
}
PHP:
if (($operator == '==') && ($data == $comparison)) {
$compareError = true;
}
Какие будут варианты оптимизации?? Или все так хорошо?