Prado\I18N\core\ChoiceFormat::isValid PHP 메소드

isValid() 공개 메소드

Determine if the given number belongs to a given set
public isValid ( $number, $set ) : boolean
리턴 boolean true if number is in the set, false otherwise.
    function isValid($number, $set)
    {
        $n = preg_match_all($this->validate, $set, $matches, PREG_SET_ORDER);
        if ($n < 3) {
            throw new Exception("Invalid set \"{$set}\"");
        }
        if (preg_match('/\\{\\s*n:([^\\}]+)\\}/', $set, $def)) {
            return $this->isValidSetNotation($number, $def[1]);
        }
        $leftBracket = $matches[0][0];
        $rightBracket = $matches[$n - 1][0];
        $i = 0;
        $elements = array();
        foreach ($matches as $match) {
            $string = $match[0];
            if ($i != 0 && $i != $n - 1 && $string !== ',') {
                if ($string == '-Inf') {
                    $elements[] = -1 * $this->inf;
                } else {
                    if ($string == '+Inf' || $string == 'Inf') {
                        $elements[] = $this->inf;
                    } else {
                        $elements[] = floatval($string);
                    }
                }
            }
            $i++;
        }
        $total = count($elements);
        $number = floatval($number);
        if ($leftBracket == '{' && $rightBracket == '}') {
            return in_array($number, $elements);
        }
        $left = false;
        if ($leftBracket == '[') {
            $left = $number >= $elements[0];
        } else {
            if ($leftBracket == '(') {
                $left = $number > $elements[0];
            }
        }
        $right = false;
        if ($rightBracket == ']') {
            $right = $number <= $elements[$total - 1];
        } else {
            if ($rightBracket == ')') {
                $right = $number < $elements[$total - 1];
            }
        }
        if ($left && $right) {
            return true;
        }
        return false;
    }