/** * @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]; }