Skip to content

Commit 9a3d95b

Browse files
author
Nil Portugués
committed
Defer class loading
1 parent f3a9b80 commit 9a3d95b

File tree

18 files changed

+58
-64
lines changed

18 files changed

+58
-64
lines changed

src/NilPortugues/SqlQueryBuilder/Builder/BuilderException.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,4 @@
1515
*/
1616
final class BuilderException extends \Exception
1717
{
18-
1918
}

src/NilPortugues/SqlQueryBuilder/Builder/GenericBuilder.php

Lines changed: 43 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,16 @@
99
*/
1010
namespace NilPortugues\SqlQueryBuilder\Builder;
1111

12+
use NilPortugues\SqlQueryBuilder\Builder\Syntax\DeleteWriter;
13+
use NilPortugues\SqlQueryBuilder\Builder\Syntax\InsertWriter;
14+
use NilPortugues\SqlQueryBuilder\Builder\Syntax\IntersectWriter;
15+
use NilPortugues\SqlQueryBuilder\Builder\Syntax\MinusWriter;
16+
use NilPortugues\SqlQueryBuilder\Builder\Syntax\SelectWriter;
17+
use NilPortugues\SqlQueryBuilder\Builder\Syntax\UnionAllWriter;
18+
use NilPortugues\SqlQueryBuilder\Builder\Syntax\UnionWriter;
19+
use NilPortugues\SqlQueryBuilder\Builder\Syntax\UpdateWriter;
1220
use NilPortugues\SqlQueryBuilder\Builder\Syntax\WriterFactory;
21+
use NilPortugues\SqlQueryBuilder\Manipulation\Delete;
1322
use NilPortugues\SqlQueryBuilder\Manipulation\QueryInterface;
1423
use NilPortugues\SqlQueryBuilder\Manipulation\QueryFactory;
1524
use NilPortugues\SqlQueryBuilder\Manipulation\Select;
@@ -85,16 +94,6 @@ public function __construct()
8594
{
8695
$this->placeholderWriter = WriterFactory::createPlaceholderWriter();
8796

88-
$this->selectWriter = WriterFactory::createSelectWriter($this, $this->placeholderWriter);
89-
$this->updateWriter = WriterFactory::createUpdateWriter($this, $this->placeholderWriter);
90-
$this->deleteWriter = WriterFactory::createDeleteWriter($this, $this->placeholderWriter);
91-
$this->insertWriter = WriterFactory::createInsertWriter($this, $this->placeholderWriter);
92-
$this->whereWriter = WriterFactory::createWhereWriter($this, $this->placeholderWriter);
93-
$this->intersectWriter = WriterFactory::createIntersectWriter($this);
94-
$this->minusWriter = WriterFactory::createMinusWriter($this);
95-
$this->unionWriter = WriterFactory::createUnionWriter($this);
96-
$this->unionAllWriter = WriterFactory::createUnionAllWriter($this);
97-
9897
$this->sqlFormatter = new Formatter();
9998
}
10099

@@ -190,34 +189,64 @@ public function write(QueryInterface $query, $resetPlaceholders = true)
190189
switch ($query->partName()) {
191190

192191
case 'SELECT':
192+
if (false === ($this->selectWriter instanceof SelectWriter)) {
193+
$this->selectWriter = WriterFactory::createSelectWriter($this, $this->placeholderWriter);
194+
}
195+
193196
$sql = $this->selectWriter->writeSelect($query);
194197
break;
195198

196199
case 'INSERT':
200+
if (false === ($this->insertWriter instanceof InsertWriter)) {
201+
$this->insertWriter = WriterFactory::createInsertWriter($this, $this->placeholderWriter);
202+
}
203+
197204
$sql = $this->insertWriter->writeInsert($query);
198205
break;
199206

200207
case 'UPDATE':
208+
if (false === ($this->updateWriter instanceof UpdateWriter)) {
209+
$this->updateWriter = WriterFactory::createUpdateWriter($this, $this->placeholderWriter);
210+
}
211+
201212
$sql = $this->updateWriter->writeUpdate($query);
202213
break;
203214

204215
case 'DELETE':
216+
if (false === ($this->deleteWriter instanceof DeleteWriter)) {
217+
$this->deleteWriter = WriterFactory::createDeleteWriter($this, $this->placeholderWriter);
218+
}
219+
205220
$sql = $this->deleteWriter->writeDelete($query);
206221
break;
207222

208223
case 'INTERSECT':
224+
if (false === ($this->intersectWriter instanceof IntersectWriter)) {
225+
$this->intersectWriter = WriterFactory::createIntersectWriter($this);
226+
}
227+
209228
$sql = $this->intersectWriter->writeIntersect($query);
210229
break;
211230

212231
case 'MINUS':
232+
if (false === ($this->minusWriter instanceof MinusWriter)) {
233+
$this->minusWriter = WriterFactory::createMinusWriter($this);
234+
}
235+
213236
$sql = $this->minusWriter->writeMinus($query);
214237
break;
215238

216239
case 'UNION':
240+
if (false === ($this->unionWriter instanceof UnionWriter)) {
241+
$this->unionWriter = WriterFactory::createUnionWriter($this);
242+
}
217243
$sql = $this->unionWriter->writeUnion($query);
218244
break;
219245

220246
case 'UNION ALL':
247+
if (false === ($this->unionAllWriter instanceof UnionAllWriter)) {
248+
$this->unionAllWriter = WriterFactory::createUnionAllWriter($this);
249+
}
221250
$sql = $this->unionAllWriter->writeUnionAll($query);
222251
break;
223252
}
@@ -244,6 +273,10 @@ public function writeFormatted(QueryInterface $query)
244273
*/
245274
public function writeJoin(Select $select)
246275
{
276+
if (false === ($this->whereWriter instanceof Delete)) {
277+
$this->whereWriter = WriterFactory::createWhereWriter($this, $this->placeholderWriter);
278+
}
279+
247280
$sql = ($select->getJoinType()) ? "{$select->getJoinType()} " : "";
248281
$sql .= "JOIN ";
249282
$sql .= $this->writeTableWithAlias($select->getTable());

src/NilPortugues/SqlQueryBuilder/Builder/Syntax/ColumnWriter.php

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@ public function writeSelectsAsColumns(Select $select)
6868
$selectAsColumns = $select->getColumnSelects();
6969

7070
if (!empty($selectAsColumns)) {
71-
7271
$selectWriter = WriterFactory::createSelectWriter($this->writer, $this->placeholderWriter);
7372

7473
array_walk(
@@ -103,7 +102,6 @@ public function writeValueAsColumns(Select $select)
103102
$newColumns = array();
104103

105104
if (!empty($valueAsColumns)) {
106-
107105
foreach ($valueAsColumns as $alias => $value) {
108106
$value = $this->writer->writePlaceholderValue($value);
109107
$newValueColumn = array($alias => $value);
@@ -126,9 +124,7 @@ public function writeFuncAsColumns(Select $select)
126124
$newColumns = array();
127125

128126
if (!empty($funcAsColumns)) {
129-
130127
foreach ($funcAsColumns as $alias => $value) {
131-
132128
$funcName = $value['func'];
133129
$funcArgs = (!empty($value['args'])) ? "(".implode(', ', $value['args']).")" : '';
134130

@@ -153,5 +149,4 @@ public function writeColumnWithAlias(Column $column)
153149

154150
return $this->writeColumn($column);
155151
}
156-
157152
}

src/NilPortugues/SqlQueryBuilder/Builder/Syntax/DeleteWriter.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ public function __construct(GenericBuilder $writer, PlaceholderWriter $placehold
3737
{
3838
$this->writer = $writer;
3939
$this->placeholderWriter = $placeholder;
40-
4140
}
4241

4342
/**

src/NilPortugues/SqlQueryBuilder/Builder/Syntax/SelectWriter.php

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,6 @@ public function writeSelect(Select $select)
107107
public function writeSelectColumns(Select $select)
108108
{
109109
if ($select->isCount() === false) {
110-
111110
$tableColumns = $select->getAllColumns();
112111
$selectAsColumns = $this->columnWriter->writeSelectsAsColumns($select);
113112
$valueAsColumns = $this->columnWriter->writeValueAsColumns($select);
@@ -123,9 +122,7 @@ function (&$column) {
123122
);
124123

125124
$columnList = implode(", ", $columns);
126-
127125
} else {
128-
129126
$columns = $select->getColumns();
130127
$column = array_pop($columns);
131128
$columnList = $column->getName();
@@ -155,7 +152,6 @@ public function writeSelectJoins(Select $select)
155152
$joins = $select->getAllJoins();
156153

157154
if (!empty($joins)) {
158-
159155
array_walk(
160156
$joins,
161157
function (&$join) {
@@ -182,7 +178,6 @@ public function writeSelectWhere(Select $select)
182178
$wheres = array_filter($wheres);
183179

184180
if (count($wheres) > 0) {
185-
186181
$str = "WHERE ";
187182
$separator = " ".$this->writer->writeConjunction($select->getWhereOperator())." ";
188183

@@ -221,7 +216,6 @@ public function writeSelectGroupBy(Select $select)
221216
{
222217
$str = "";
223218
if (count($select->getGroupBy())) {
224-
225219
$groupCols = $select->getGroupBy();
226220

227221
array_walk(
@@ -248,7 +242,6 @@ public function writeSelectHaving(Select $select)
248242
$str = "";
249243

250244
if (count($havingArray = $select->getAllHavings()) > 0) {
251-
252245
$placeholder = $this->placeholderWriter;
253246
$writer = $this->writer;
254247

@@ -280,7 +273,6 @@ protected function writeSelectOrderBy(Select $select)
280273
{
281274
$str = "";
282275
if (count($select->getAllOrderBy())) {
283-
284276
$orderByArray = $select->getAllOrderBy();
285277
array_walk(
286278
$orderByArray,

src/NilPortugues/SqlQueryBuilder/Builder/Syntax/UpdateWriter.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ public function writeUpdate(Update $update)
6767
);
6868

6969
if (!is_null($update->getWhere())) {
70-
7170
$whereWriter = WriterFactory::createWhereWriter($this->writer, $this->placeholderWriter);
7271
$parts[] = " WHERE {$whereWriter->writeWhere($update->getWhere())}";
7372
}
@@ -89,7 +88,6 @@ private function writeUpdateValues(Update $update)
8988
{
9089
$assigns = array();
9190
foreach ($update->getValues() as $column => $value) {
92-
9391
$newColumn = array($column);
9492
$column = $this->columnWriter->writeColumn(SyntaxFactory::createColumn($newColumn, $update->getTable()));
9593

src/NilPortugues/SqlQueryBuilder/Builder/Syntax/WhereWriter.php

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,6 @@ protected function writeWhereMatches(Where $where)
111111
$matches = array();
112112

113113
foreach ($where->getMatches() as $values) {
114-
115114
$columns = SyntaxFactory::createColumns($values['columns'], $where->getTable());
116115

117116
$columnNames = array();
@@ -152,7 +151,6 @@ protected function writeWhereIns(Where $where)
152151
$ins = array();
153152

154153
foreach ($where->getIns() as $column => $values) {
155-
156154
$newColumn = array($column);
157155
$column = SyntaxFactory::createColumn($newColumn, $where->getTable());
158156
$column = $this->columnWriter->writeColumn($column);
@@ -176,7 +174,6 @@ protected function writeWhereNotIns(Where $where)
176174
$notIns = $where->getNotIns();
177175

178176
foreach ($notIns as $column => &$values) {
179-
180177
$newColumn = array($column);
181178
$column = SyntaxFactory::createColumn($newColumn, $where->getTable());
182179
$column = $this->columnWriter->writeColumn($column);
@@ -247,15 +244,11 @@ protected function writeWherePartialCondition(&$subject)
247244
{
248245
if ($subject instanceof Column) {
249246
$str = $this->columnWriter->writeColumn($subject);
250-
251247
} elseif ($subject instanceof Select) {
252-
253248
$selectWriter = WriterFactory::createSelectWriter($this->writer, $this->placeholderWriter);
254249
$str = '('.$selectWriter->writeSelect($subject).')';
255-
256250
} else {
257251
$str = $this->writer->writePlaceholderValue($subject);
258-
259252
}
260253

261254
return $str;

src/NilPortugues/SqlQueryBuilder/Manipulation/Delete.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
*/
1616
class Delete extends BaseQuery
1717
{
18-
1918
/**
2019
* @var int
2120
*/

src/NilPortugues/SqlQueryBuilder/Manipulation/QueryException.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,4 @@
1515
*/
1616
final class QueryException extends \Exception
1717
{
18-
1918
}

src/NilPortugues/SqlQueryBuilder/Manipulation/Select.php

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -168,15 +168,13 @@ public function join(
168168
$key = $table->getCompleteName();
169169

170170
if (!isset($this->joins[$key])) {
171-
172171
$select = QueryFactory::createSelect($table);
173172
$select->setColumns($columns);
174173
$select->setJoinType($joinType);
175174
$this->addJoin($select, $selfColumn, $refColumn);
176175
}
177176

178177
return $this->joins[$key];
179-
180178
}
181179

182180
/**
@@ -206,7 +204,6 @@ public function addJoin(Select $select, $selfColumn, $refColumn)
206204
$key = $select->getTable()->getCompleteName();
207205

208206
if (!isset($this->joins[$key])) {
209-
210207
$newColumn = array($selfColumn);
211208
$select->joinCondition()->equals($refColumn, SyntaxFactory::createColumn($newColumn, $this->getTable()));
212209
$this->joins[$key] = $select;
@@ -378,9 +375,9 @@ public function getColumnValues()
378375
/**
379376
* Allows calculation on columns using predefined SQL functions.
380377
*
381-
* @param string $funcName
378+
* @param string $funcName
382379
* @param string[] $arguments
383-
* @param string $alias
380+
* @param string $alias
384381
*
385382
* @return $this
386383
*/
@@ -448,7 +445,7 @@ public function count($columnName = '*', $alias = '')
448445
{
449446
$count = 'COUNT(';
450447
$count .= ($columnName !== '*') ? "$this->table.{$columnName}" : '*';
451-
$count .=')';
448+
$count .= ')';
452449

453450
if (isset($alias) && strlen($alias)>0) {
454451
$count .= " AS '{$alias}'";

src/NilPortugues/SqlQueryBuilder/Syntax/SyntaxFactory.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ public static function createColumns(array &$arguments, $table = null)
2828
$createdColumns = array();
2929

3030
foreach ($arguments as $index => $column) {
31-
3231
if (!is_object($column)) {
3332
$newColumn = array($column);
3433
$column = self::createColumn($newColumn, $table);

0 commit comments

Comments
 (0)