/** * @param int|float|string|array $value * @return string */ public static function encodeValue($value) { return NormalizeValue::normalizeJson($value); }
/** * @param mixed $value * @param string $operator * @return mixed */ protected function convertRuleValueToConditionValue($value, $operator) { if (is_array($value)) { foreach ($value as &$val) { $val = trim($this->convertRuleValueToConditionValue($val, null)); } unset($val); if ($this->getDataType() === static::TYPE_STRING && in_array($operator, [static::OPERATOR_IN_ARRAY, static::OPERATOR_NOT_IN_ARRAY], true)) { $value = '^(' . implode('|', array_map('preg_quote', $value)) . ')$'; } return array_values($value); } switch ($this->getDataType()) { case static::TYPE_TIME: $value = NormalizeValue::normalizeTime($value); break; case static::TYPE_DATE: $value = NormalizeValue::normalizeDate($value); break; case static::TYPE_TIMESTAMP: $value = NormalizeValue::normalizeDateTime($value); break; case static::TYPE_INTEGER: $value = NormalizeValue::normalizeInteger($value); break; case static::TYPE_FLOAT: $value = NormalizeValue::normalizeFloat($value); break; case static::TYPE_BOOL: $value = NormalizeValue::normalizeBoolean($value, ['f']); break; } switch ($operator) { case static::OPERATOR_BEGINS_WITH: case static::OPERATOR_NOT_BEGINS_WITH: return '^' . preg_quote($value); break; case static::OPERATOR_ENDS_WITH: case static::OPERATOR_NOT_ENDS_WITH: return preg_quote($value) . '$'; break; case static::OPERATOR_CONTAINS: case static::OPERATOR_NOT_CONTAINS: return preg_quote($value); break; case static::OPERATOR_EQUAL: case static::OPERATOR_NOT_EQUAL: if ($this->getDataType() === static::TYPE_STRING) { return '^' . preg_quote($value) . '$'; } break; case static::OPERATOR_IS_NULL: case static::OPERATOR_IS_NOT_NULL: return null; case static::OPERATOR_IS_EMPTY: case static::OPERATOR_IS_NOT_EMPTY: return ''; } return $value; }