diff options
author | Dan Ungureanu <udan1107@gmail.com> | 2015-08-18 02:24:42 +0300 |
---|---|---|
committer | Dan Ungureanu <udan1107@gmail.com> | 2015-08-18 02:24:42 +0300 |
commit | 14c54da98c3b4f18c78ff44c22fbdd20e8ef6e18 (patch) | |
tree | a4604f6b1d1095790e313b71bf226e4291788ca8 /src/Components/Expression.php | |
parent | 1568adba1af7bf061354a30afd169e29fa43f133 (diff) | |
download | sql-parser-14c54da98c3b4f18c78ff44c22fbdd20e8ef6e18.zip sql-parser-14c54da98c3b4f18c78ff44c22fbdd20e8ef6e18.tar.gz sql-parser-14c54da98c3b4f18c78ff44c22fbdd20e8ef6e18.tar.bz2 |
Replaced explicit calls to Component::build() with implicit calls to Component::__toString().
Fixed bugs that caused field names like '0', '0.0', etc. to be considered invalid.
Refactoring.
Diffstat (limited to 'src/Components/Expression.php')
-rw-r--r-- | src/Components/Expression.php | 38 |
1 files changed, 21 insertions, 17 deletions
diff --git a/src/Components/Expression.php b/src/Components/Expression.php index 11e7132..ad4d5e8 100644 --- a/src/Components/Expression.php +++ b/src/Components/Expression.php @@ -350,32 +350,36 @@ class Expression extends Component } /** - * @param Expression $component The component to be built. + * @param Expression|Expression[] $component The component to be built. * * @return string */ public static function build($component) { - if (!empty($component->expr)) { - $ret = $component->expr; + if (is_array($component)) { + return implode($component, ', '); } else { - $fields = array(); - if (!empty($component->database)) { - $fields[] = $component->database; - } - if (!empty($component->table)) { - $fields[] = $component->table; + if (!empty($component->expr)) { + $ret = $component->expr; + } else { + $fields = array(); + if ((isset($component->database)) && ($component->database !== '')) { + $fields[] = $component->database; + } + if ((isset($component->table)) && ($component->table !== '')) { + $fields[] = $component->table; + } + if ((isset($component->column)) && ($component->column !== '')) { + $fields[] = $component->column; + } + $ret = implode('.', Context::escape($fields)); } - if (!empty($component->column)) { - $fields[] = $component->column; + + if (!empty($component->alias)) { + $ret .= ' AS ' . Context::escape($component->alias); } - $ret = implode('.', Context::escape($fields)); - } - if (!empty($component->alias)) { - $ret .= ' AS ' . Context::escape($component->alias); + return $ret; } - - return $ret; } } |