quoteColumnName($strings); } $return = []; foreach ($strings as $string) { $return[] = $this->quoteColumnName($string); } return $return; } /** * @param string|ILiteral|IParameter|IQueryFunction $string string, Literal or Parameter * @return string */ public function quoteColumnName($string) { if ($string instanceof IParameter || $string instanceof ILiteral || $string instanceof IQueryFunction) { return (string)$string; } if ($string === null || $string === 'null' || $string === '*') { return $string; } if (!is_string($string)) { throw new \InvalidArgumentException('Only strings, Literals and Parameters are allowed'); } $string = str_replace(' AS ', ' as ', $string); if (substr_count($string, ' as ')) { return implode(' as ', array_map([$this, 'quoteColumnName'], explode(' as ', $string, 2))); } if (substr_count($string, '.')) { [$alias, $columnName] = explode('.', $string, 2); if ($columnName === '*') { return '`' . $alias . '`.*'; } return '`' . $alias . '`.`' . $columnName . '`'; } return '`' . $string . '`'; } }