Доброго дня. Есть некая функция. Необходимо ограничить диапазон ввода значений у нее, при которых она работает правильно, а при остальных выдавало бы ошибку . Можно было бы поставить проверки в самой функции, но хотелось бы прибегнуть к функции assert(). Возможно ли создать такое выражение в проверке функции assert() на истинность? Необходимые условия: $A и $B принимают значения только 0 или 1 $operator - только "and", "or", "xor" Искал в инете, но там почти везде копипаст с php.net. В тех примерах не разобрался. Может кто доступно сможет объяснить? Сама функция: PHP: function getBool($A, $B, $operator) { switch (strtolower($operator)) { case "and": return (int)($A && $B); case "or": return (int)($A || $B); case "xor": return (int)($A XOR $B); default: return "NULL"; } }
Так? PHP: function assert_failure() { echo 'Проверка провалена'; } function checkParams($A, $B, $operator) { assert(in_array($operator, array('and', 'or', 'xor'))); assert( ($A == 0 or $A == 1) ? true : false ); assert( ($B == 0 or $B == 1) ? true : false ); } assert_options(ASSERT_ACTIVE, true); assert_options(ASSERT_BAIL, true); assert_options(ASSERT_WARNING, false); assert_options(ASSERT_CALLBACK, 'assert_failure'); function getBool($A, $B, $operator) { checkParams($A, $B, $operator); switch (strtolower($operator)) { case "and": return (int)($A && $B); case "or": return (int)($A || $B); case "xor": return (int)($A XOR $B); default: return "NULL"; } } echo getBool(1, 1, "xor");
Ого, спасибо) 8 и 9 строчка как читается? --- Добавлено --- значение $A один или ноль - это true , иначе фолс?
Вот всегда интересовало, а тернарник нафига? У вас что, логическое выражение $A==0 or $A==1 может дать какой-то ещё результат, кроме true или false?
PHP: function checkParams($A, $B, $operator) { assert(in_array($operator, array('and', 'or', 'xor'))); assert(($A == 0 or $A == 1) and ($B == 0 or $B == 1)); }