Skip to content

Commit 14c54da

Browse files
committed
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.
1 parent 1568adb commit 14c54da

25 files changed

+112
-134
lines changed

src/Components/AlterOperation.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,6 @@ public static function parse(Parser $parser, TokensList $list, array $options =
202202
__('Unrecognized alter operation.'),
203203
$list->tokens[$list->idx]
204204
);
205-
return null;
206205
}
207206

208207
--$list->idx;
@@ -216,9 +215,9 @@ public static function parse(Parser $parser, TokensList $list, array $options =
216215
*/
217216
public static function build($component)
218217
{
219-
$ret = OptionsArray::build($component->options) . ' ';
220-
if (!empty($component->field)) {
221-
$ret .= Expression::build($component->field) . ' ';
218+
$ret = $component->options . ' ';
219+
if ((isset($component->field)) && ($component->field !== '')) {
220+
$ret .= $component->field . ' ';
222221
}
223222
$ret .= TokensList::build($component->unknown);
224223
return $ret;

src/Components/ArrayObj.php

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,6 @@ public static function parse(Parser $parser, TokensList $list, array $options =
136136
break;
137137
}
138138
}
139-
140139
}
141140

142141
return $ret;
@@ -150,21 +149,11 @@ public static function parse(Parser $parser, TokensList $list, array $options =
150149
public static function build($component)
151150
{
152151
if (is_array($component)) {
153-
$values = array();
154-
foreach ($component as $c) {
155-
$values[] = static::build($c);
156-
}
157-
return implode(', ', $values);
152+
return implode(', ', $component);
153+
} elseif (!empty($component->raw)) {
154+
return '(' . implode(', ', $component->raw) . ')';
158155
} else {
159-
$values = array();
160-
if (!empty($component->raw)) {
161-
$values = $component->raw;
162-
} else {
163-
foreach ($component->values as $value) {
164-
$values[] = $value;
165-
}
166-
}
167-
return '(' . implode(', ', $values) . ')';
156+
return '(' . implode(', ', $component->values) . ')';
168157
}
169158
}
170159
}

src/Components/Condition.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -202,10 +202,10 @@ public static function parse(Parser $parser, TokensList $list, array $options =
202202
*/
203203
public static function build($component)
204204
{
205-
$ret = array();
206-
foreach ($component as $c) {
207-
$ret[] = $c->expr;
205+
if (is_array($component)) {
206+
return implode(' ', $component);
207+
} else {
208+
return $component->expr;
208209
}
209-
return implode(' ', $ret);
210210
}
211211
}

src/Components/CreateDefinition.php

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -278,35 +278,31 @@ public static function parse(Parser $parser, TokensList $list, array $options =
278278
public static function build($component)
279279
{
280280
if (is_array($component)) {
281-
$ret = array();
282-
foreach ($component as $c) {
283-
$ret[] = static::build($c);
284-
}
285-
return "(\n" . implode(",\n", $ret) . "\n)";
281+
return "(\n" . implode(",\n", $component) . "\n)";
286282
} else {
287283
$tmp = '';
288284

289285
if ($component->isConstraint) {
290286
$tmp .= 'CONSTRAINT ';
291287
}
292288

293-
if (!empty($component->name)) {
289+
if ((isset($component->name)) && ($component->name !== '')) {
294290
$tmp .= Context::escape($component->name) . ' ';
295291
}
296292

297293
if (!empty($component->type)) {
298-
$tmp .= DataType::build($component->type) . ' ';
294+
$tmp .= $component->type . ' ';
299295
}
300296

301297
if (!empty($component->key)) {
302-
$tmp .= Key::build($component->key) . ' ';
298+
$tmp .= $component->key . ' ';
303299
}
304300

305301
if (!empty($component->references)) {
306-
$tmp .= 'REFERENCES ' . Reference::build($component->references) . ' ';
302+
$tmp .= 'REFERENCES ' . $component->references . ' ';
307303
}
308304

309-
$tmp .= OptionsArray::build($component->options);
305+
$tmp .= $component->options;
310306

311307
return trim($tmp);
312308
}

src/Components/DataType.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -160,9 +160,7 @@ public static function build($component)
160160
if (!empty($component->parameters)) {
161161
$tmp = '(' . implode(', ', $component->parameters) . ')';
162162
}
163-
return trim(
164-
$component->name . $tmp . ' '
165-
. OptionsArray::build($component->options)
166-
);
163+
164+
return trim($component->name . $tmp . ' ' . $component->options);
167165
}
168166
}

src/Components/Expression.php

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -350,32 +350,36 @@ public static function parse(Parser $parser, TokensList $list, array $options =
350350
}
351351

352352
/**
353-
* @param Expression $component The component to be built.
353+
* @param Expression|Expression[] $component The component to be built.
354354
*
355355
* @return string
356356
*/
357357
public static function build($component)
358358
{
359-
if (!empty($component->expr)) {
360-
$ret = $component->expr;
359+
if (is_array($component)) {
360+
return implode($component, ', ');
361361
} else {
362-
$fields = array();
363-
if (!empty($component->database)) {
364-
$fields[] = $component->database;
365-
}
366-
if (!empty($component->table)) {
367-
$fields[] = $component->table;
362+
if (!empty($component->expr)) {
363+
$ret = $component->expr;
364+
} else {
365+
$fields = array();
366+
if ((isset($component->database)) && ($component->database !== '')) {
367+
$fields[] = $component->database;
368+
}
369+
if ((isset($component->table)) && ($component->table !== '')) {
370+
$fields[] = $component->table;
371+
}
372+
if ((isset($component->column)) && ($component->column !== '')) {
373+
$fields[] = $component->column;
374+
}
375+
$ret = implode('.', Context::escape($fields));
368376
}
369-
if (!empty($component->column)) {
370-
$fields[] = $component->column;
377+
378+
if (!empty($component->alias)) {
379+
$ret .= ' AS ' . Context::escape($component->alias);
371380
}
372-
$ret = implode('.', Context::escape($fields));
373-
}
374381

375-
if (!empty($component->alias)) {
376-
$ret .= ' AS ' . Context::escape($component->alias);
382+
return $ret;
377383
}
378-
379-
return $ret;
380384
}
381385
}

src/Components/FunctionCall.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,6 @@ public static function parse(Parser $parser, TokensList $list, array $options =
120120
*/
121121
public static function build($component)
122122
{
123-
return $component->name . ArrayObj::build($component->parameters);
123+
return $component->name . $component->parameters;
124124
}
125125
}

src/Components/IntoKeyword.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ public static function build($component)
141141
if ($component->dest instanceof Expression) {
142142
$columns = !empty($component->columns) ?
143143
'(' . implode(', ', $component->columns) . ')' : '';
144-
return Expression::build($component->dest) . $columns;
144+
return $component->dest . $columns;
145145
} else {
146146
return 'OUTFILE "' . $component->dest . '"';
147147
}

src/Components/JoinKeyword.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,8 +158,8 @@ public static function build($component)
158158
{
159159
$ret = array();
160160
foreach ($component as $c) {
161-
$ret[] = (($c->type === 'JOIN') ? 'JOIN ' : ($c->type . ' JOIN ')) .
162-
Expression::build($c->expr) . ' ON ' . Condition::build($c->on);
161+
$ret[] = (($c->type === 'JOIN') ? 'JOIN ' : ($c->type . ' JOIN '))
162+
. $c->expr . ' ON ' . Condition::build($c->on);
163163
}
164164
return implode(' ', $ret);
165165
}

src/Components/Key.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,6 @@ public static function parse(Parser $parser, TokensList $list, array $options =
145145
++$list->idx;
146146
break;
147147
}
148-
149148
}
150149

151150
--$list->idx;
@@ -163,8 +162,8 @@ public static function build($component)
163162
if (!empty($component->name)) {
164163
$ret .= Context::escape($component->name) . ' ';
165164
}
166-
$ret .= '(' . implode(', ', Context::escape($component->columns)) . ')';
167-
$ret .= OptionsArray::build($component->options);
165+
$ret .= '(' . implode(', ', Context::escape($component->columns)) . ') '
166+
. $component->options;
168167
return trim($ret);
169168
}
170169
}

0 commit comments

Comments
 (0)