/** * @return array[] */ public function parseProvider() { //prepare provider values for all operators $provider = []; foreach (Operator::getNullableOperators() as $operator) { $provider[] = [$operator, [$operator, null]]; } $operators = array_merge(Operator::getEqualityOperators(), Operator::getOrderableOperators(), Operator::getLikeOperators()); foreach ($operators as $operator) { $value = (string) rand(0, 100); $provider[] = [sprintf('%s%s', $operator, $value), [$operator, $value]]; } return $provider; }
/** * @param string $operatorValueString * @return string[2] [operator, operand] * @example * ```php * list($operator, $operand) = Operator::parse('>=5'); * ``` */ public static function parse($operatorValueString) { $operator = Operator::OPERATOR_EQUAL; $value = $operatorValueString; $operators = implode('|', array_merge(Operator::getOrderableOperators(), Operator::getLikeOperators(), Operator::getInArrayOperators())); if (!!preg_match('/^(' . $operators . ')[\\ ]{0,1}(.+)$/', $operatorValueString, $matches)) { return [$matches[1], $matches[2]]; } elseif (!!preg_match('/^(' . implode('|', Operator::getNullableOperators()) . ')$/', $operatorValueString, $matches)) { return [$matches[1], null]; } return [$operator, $value]; }
/** * @param string $operatorValueString * @return string[2] [operator, operand] * @example * ```php * list($operator, $operand) = Operator::parse('>=5'); * ``` * @todo use aliases */ public static function parse($operatorValueString) { $operator = Operator::EQUAL; $value = $operatorValueString; $operators = implode('|', array_merge(Operator::getOrderableOperators(), Operator::getLikeOperators(), Operator::getInArrayOperators())); if (!!preg_match('/^(' . implode('|', Operator::getInOperators()) . ')[\\ ]{0,1}(.+)$/', $operatorValueString, $matches)) { //handle IN operators //values MUST be a list $values = array_map('trim', explode(',', $matches[2])); return [$matches[1], $values]; } elseif (!!preg_match('/^(' . $operators . ')[\\ ]{0,1}(.+)$/', $operatorValueString, $matches)) { return [$matches[1], $matches[2]]; } elseif (!!preg_match('/^(' . implode('|', Operator::getNullableOperators()) . ')$/', $operatorValueString, $matches)) { return [$matches[1], null]; } return [$operator, $value]; }