Skip to content

Commit 2368e42

Browse files
committed
Move argument rendering from ArgumentInterface into AbstractSqlRenderer
Remove render() from ArgumentInterface and all 8 implementations, making argument objects pure data carriers. The renderer now owns all rendering via instanceof dispatch in renderArgument(), eliminating a method-call hop per argument. Argument properties changed from private to public for direct access. Also exclude top-level test/*.php files from phpcs.
1 parent 3f43830 commit 2368e42

17 files changed

+65
-92
lines changed

phpcs.xml.dist

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
<file>src</file>
1717
<file>test</file>
1818

19+
<exclude-pattern>test/*[^/]\.php$</exclude-pattern>
20+
1921
<!-- Include all rules from Laminas Coding Standard -->
2022
<rule ref="LaminasCodingStandard">
2123
<!--

src/Sql/Argument/Identifier.php

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
use PhpDb\Sql\ArgumentInterface;
88
use PhpDb\Sql\ArgumentType;
9-
use PhpDb\Sql\Platform\AbstractSqlRenderer;
109

1110
final readonly class Identifier implements ArgumentInterface
1211
{
@@ -24,9 +23,4 @@ public function getValue(): string
2423
{
2524
return $this->identifier;
2625
}
27-
28-
public function render(AbstractSqlRenderer $renderer, string $paramPrefix, int &$paramIndex): string
29-
{
30-
return $renderer->platform->quoteIdentifier($this->identifier);
31-
}
3226
}

src/Sql/Argument/Identifiers.php

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,6 @@
66

77
use PhpDb\Sql\ArgumentInterface;
88
use PhpDb\Sql\ArgumentType;
9-
use PhpDb\Sql\Platform\AbstractSqlRenderer;
10-
11-
use function implode;
129

1310
final readonly class Identifiers implements ArgumentInterface
1411
{
@@ -43,13 +40,4 @@ public function getValue(): array
4340
}
4441
return $result;
4542
}
46-
47-
public function render(AbstractSqlRenderer $renderer, string $paramPrefix, int &$paramIndex): string
48-
{
49-
$quoted = [];
50-
foreach ($this->identifiers as $identifier) {
51-
$quoted[] = $identifier->render($renderer, $paramPrefix, $paramIndex);
52-
}
53-
return implode(', ', $quoted);
54-
}
5543
}

src/Sql/Argument/Literal.php

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,11 @@
66

77
use PhpDb\Sql\ArgumentInterface;
88
use PhpDb\Sql\ArgumentType;
9-
use PhpDb\Sql\Platform\AbstractSqlRenderer;
109

1110
final readonly class Literal implements ArgumentInterface
1211
{
1312
public function __construct(
14-
private string $literal
13+
public string $literal
1514
) {
1615
}
1716

@@ -24,9 +23,4 @@ public function getValue(): string
2423
{
2524
return $this->literal;
2625
}
27-
28-
public function render(AbstractSqlRenderer $renderer, string $paramPrefix, int &$paramIndex): string
29-
{
30-
return $this->literal;
31-
}
3226
}

src/Sql/Argument/NullValue.php

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
use PhpDb\Sql\ArgumentInterface;
88
use PhpDb\Sql\ArgumentType;
9-
use PhpDb\Sql\Platform\AbstractSqlRenderer;
109

1110
final readonly class NullValue implements ArgumentInterface
1211
{
@@ -19,9 +18,4 @@ public function getValue(): null
1918
{
2019
return null;
2120
}
22-
23-
public function render(AbstractSqlRenderer $renderer, string $paramPrefix, int &$paramIndex): string
24-
{
25-
return 'NULL';
26-
}
2721
}

src/Sql/Argument/Parameter.php

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
use PhpDb\Sql\ArgumentInterface;
88
use PhpDb\Sql\ArgumentType;
9-
use PhpDb\Sql\Platform\AbstractSqlRenderer;
109

1110
final readonly class Parameter implements ArgumentInterface
1211
{
@@ -16,9 +15,9 @@
1615
* @param ?string $typeHint Type hint for ParameterContainer (e.g. TYPE_INTEGER)
1716
*/
1817
public function __construct(
19-
private null|string|int|float|bool $value,
20-
private ?string $preferredName = null,
21-
private ?string $typeHint = null,
18+
public null|string|int|float|bool $value,
19+
public ?string $preferredName = null,
20+
public ?string $typeHint = null,
2221
) {
2322
}
2423

@@ -41,9 +40,4 @@ public function getTypeHint(): ?string
4140
{
4241
return $this->typeHint;
4342
}
44-
45-
public function render(AbstractSqlRenderer $renderer, string $paramPrefix, int &$paramIndex): string
46-
{
47-
return $renderer->bindParameter($this);
48-
}
4943
}

src/Sql/Argument/Select.php

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,12 @@
77
use PhpDb\Sql\ArgumentInterface;
88
use PhpDb\Sql\ArgumentType;
99
use PhpDb\Sql\ExpressionInterface;
10-
use PhpDb\Sql\Platform\AbstractSqlRenderer;
1110
use PhpDb\Sql\SqlInterface;
1211

1312
final readonly class Select implements ArgumentInterface
1413
{
1514
public function __construct(
16-
private ExpressionInterface|SqlInterface $select
15+
public ExpressionInterface|SqlInterface $select
1716
) {
1817
}
1918

@@ -26,13 +25,4 @@ public function getValue(): ExpressionInterface|SqlInterface
2625
{
2726
return $this->select;
2827
}
29-
30-
public function render(AbstractSqlRenderer $renderer, string $paramPrefix, int &$paramIndex): string
31-
{
32-
if ($this->select instanceof \PhpDb\Sql\Select) {
33-
return '(' . $renderer->processSubSelect($this->select) . ')';
34-
}
35-
36-
return $this->select->toSql($renderer, $paramPrefix, $paramIndex);
37-
}
3828
}

src/Sql/Argument/Value.php

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,14 @@
66

77
use PhpDb\Sql\ArgumentInterface;
88
use PhpDb\Sql\ArgumentType;
9-
use PhpDb\Sql\Platform\AbstractSqlRenderer;
109

1110
final readonly class Value implements ArgumentInterface
1211
{
1312
/**
1413
* @param null|string|int|float|bool $value Scalar value, or null
1514
*/
1615
public function __construct(
17-
private null|string|int|float|bool $value
16+
public null|string|int|float|bool $value
1817
) {
1918
}
2019

@@ -27,11 +26,4 @@ public function getValue(): null|string|int|float|bool
2726
{
2827
return $this->value;
2928
}
30-
31-
public function render(AbstractSqlRenderer $renderer, string $paramPrefix, int &$paramIndex): string
32-
{
33-
return $renderer->parameterContainer !== null
34-
? $renderer->bindValue($this->value, $paramPrefix, $paramIndex)
35-
: $renderer->platform->quoteValue((string) $this->value);
36-
}
3729
}

src/Sql/Argument/Values.php

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,13 @@
66

77
use PhpDb\Sql\ArgumentInterface;
88
use PhpDb\Sql\ArgumentType;
9-
use PhpDb\Sql\Platform\AbstractSqlRenderer;
109

1110
use function array_values;
12-
use function implode;
1311

1412
final readonly class Values implements ArgumentInterface
1513
{
1614
/** @var list<null|string|int|float|bool> */
17-
private array $values;
15+
public array $values;
1816

1917
/**
2018
* @param list<null|string|int|float|bool> $values
@@ -36,21 +34,4 @@ public function getValue(): array
3634
{
3735
return $this->values;
3836
}
39-
40-
public function render(AbstractSqlRenderer $renderer, string $paramPrefix, int &$paramIndex): string
41-
{
42-
$rendered = [];
43-
44-
if ($renderer->parameterContainer !== null) {
45-
foreach ($this->values as $value) {
46-
$rendered[] = $renderer->bindValue($value, $paramPrefix, $paramIndex);
47-
}
48-
} else {
49-
foreach ($this->values as $value) {
50-
$rendered[] = $renderer->platform->quoteValue((string) $value);
51-
}
52-
}
53-
54-
return '(' . implode(', ', $rendered) . ')';
55-
}
5637
}

src/Sql/ArgumentInterface.php

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,9 @@
44

55
namespace PhpDb\Sql;
66

7-
use PhpDb\Sql\Platform\AbstractSqlRenderer;
8-
97
interface ArgumentInterface
108
{
119
public function getType(): ArgumentType;
1210

1311
public function getValue(): ExpressionInterface|SqlInterface|string|int|float|bool|array|null;
14-
15-
public function render(AbstractSqlRenderer $renderer, string $paramPrefix, int &$paramIndex): string;
1612
}

0 commit comments

Comments
 (0)