Skip to content

Commit e04522f

Browse files
committed
Enhanced typing
1 parent 8eeffd5 commit e04522f

File tree

5 files changed

+55
-18
lines changed

5 files changed

+55
-18
lines changed

src/Builder/Helpers/ConditionAddHelper.php

+10-4
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,18 @@
22
namespace Kir\MySQL\Builder\Helpers;
33

44
use Kir\MySQL\Builder\Expr\OptionalExpression;
5+
use Kir\MySQL\Builder\Internal\Types;
6+
use Kir\MySQL\Builder\Traits\WhereBuilder;
57

8+
/**
9+
* @phpstan-import-type DBParameterValueType from Types
10+
* @phpstan-import-type DBWhereExpressionType from WhereBuilder
11+
*/
612
abstract class ConditionAddHelper {
713
/**
8-
* @param callable(string|array<string, mixed>, array<int, mixed>): void $addFn
9-
* @param string|array<string, mixed>|object|OptionalExpression $expression
10-
* @param array<int, mixed> $args
14+
* @param callable(string|array<string, null|scalar>, array<int, DBParameterValueType>): void $addFn
15+
* @param DBWhereExpressionType $expression
16+
* @param array<DBParameterValueType> $args
1117
*/
1218
public static function addCondition(callable $addFn, $expression, array $args): void {
1319
if($expression instanceof OptionalExpression) {
@@ -26,7 +32,7 @@ public static function addCondition(callable $addFn, $expression, array $args):
2632
/**
2733
* @param callable(string|array<string, mixed>, array<int, mixed>): void $addFn
2834
* @param array<string, mixed> $expression
29-
* @param array<int, mixed> $args
35+
* @param array<int, DBParameterValueType> $args
3036
*/
3137
private static function addAsArray(callable $addFn, array $expression, array $args): void {
3238
if(count($expression) > 0) {

src/Builder/Internal/ConditionBuilder.php

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
use Kir\MySQL\Builder;
55
use Kir\MySQL\Builder\Expr\OptionalExpression;
66
use Kir\MySQL\Database;
7+
use Stringable;
78

89
final class ConditionBuilder {
910
/**
@@ -30,6 +31,7 @@ public static function build(Database $db, string $query, array $conditions, str
3031
}
3132
}
3233
} else {
34+
/** @var Stringable|string $expression */
3335
$arr = self::buildCondition($arr, (string) $expression, $arguments, $db);
3436
}
3537
}

src/Builder/Internal/Types.php

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php
2+
3+
namespace Kir\MySQL\Builder\Internal;
4+
5+
use DateTimeInterface;
6+
use Kir\MySQL\Builder\DBExpr;
7+
use Kir\MySQL\Builder\Expr\OptionalExpression;
8+
use Kir\MySQL\Builder\Select;
9+
use Kir\MySQL\Tools\VirtualTable;
10+
use Stringable;
11+
12+
/**
13+
* @phpstan-type DBParameterValueType null|scalar|Stringable|DBExpr|Select|DateTimeInterface|array<null|scalar|Stringable>
14+
* @phpstan-type DBTableNameType string|array<int, array<string, null|scalar>>|Select|VirtualTable
15+
* @phpstan-type DBFetchRowsCallableReturnType string|array<int, array<string, null|scalar>>|Select|VirtualTable
16+
* @phpstan-type DBWhereExpressionType string|array<string, null|scalar|Stringable>|object|OptionalExpression
17+
*/
18+
class Types {
19+
}
20+
21+
// (callable(array<string, bool|float|int|string|null>): (array<string, bool|float|int|string|null>|Kir\MySQL\Builder\Helpers\DBIgnoreRow|void|null))|null
22+
// (callable(array<string, bool|float|int|string|null>): (array<K, V>|Kir\MySQL\Builder\Helpers\DBIgnoreRow|void))|null
23+
24+
// array<string, array<string, bool|float|int|string|null>|Kir\MySQL\Builder\Helpers\DBIgnoreRow>
25+
// array<string, bool|float|int|string|null>|Kir\MySQL\Builder\Helpers\DBIgnoreRow

src/Builder/Traits/HavingBuilder.php

+9-8
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,23 @@
11
<?php
22
namespace Kir\MySQL\Builder\Traits;
33

4-
use DateTimeInterface;
5-
use Kir\MySQL\Builder\DBExpr;
6-
use Kir\MySQL\Builder\Expr\OptionalExpression;
74
use Kir\MySQL\Builder\Helpers\ConditionAddHelper;
85
use Kir\MySQL\Builder\Internal\ConditionBuilder;
9-
use Kir\MySQL\Builder\Select;
6+
use Kir\MySQL\Builder\Internal\Types;
107

8+
/**
9+
* @phpstan-import-type DBParameterValueType from Types
10+
* @phpstan-import-type DBWhereExpressionType from Types
11+
*/
1112
trait HavingBuilder {
1213
use AbstractDB;
1314

14-
/** @var array<int, array{string|array<string, mixed>|object|OptionalExpression, array<int, null|string|array<int, null|scalar>|DBExpr|Select>}> */
15-
private $having = [];
15+
/** @var array<int, array{DBWhereExpressionType, array<DBParameterValueType>}> */
16+
private array $having = [];
1617

1718
/**
18-
* @param string|array<string, mixed>|object|OptionalExpression $expression
19-
* @param null|scalar|array<int, null|scalar>|DBExpr|Select|DateTimeInterface ...$args
19+
* @param DBWhereExpressionType $expression
20+
* @param DBParameterValueType ...$args
2021
* @return $this
2122
*/
2223
public function having($expression, ...$args) {

src/Builder/Traits/WhereBuilder.php

+9-6
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,25 @@
11
<?php
22
namespace Kir\MySQL\Builder\Traits;
33

4-
use DateTimeInterface;
5-
use Kir\MySQL\Builder\DBExpr;
64
use Kir\MySQL\Builder\Expr\OptionalExpression;
75
use Kir\MySQL\Builder\Helpers\ConditionAddHelper;
86
use Kir\MySQL\Builder\Internal\ConditionBuilder;
9-
use Kir\MySQL\Builder\Select;
7+
use Kir\MySQL\Builder\Internal\Types;
8+
use Stringable;
109

10+
/**
11+
* @phpstan-import-type DBParameterValueType from Types
12+
* @phpstan-import-type DBWhereExpressionType from Types
13+
*/
1114
trait WhereBuilder {
1215
use AbstractDB;
1316

14-
/** @var array<int, array{string|array<string, mixed>|object|OptionalExpression, array<int, null|string|array<int, null|scalar>|DBExpr|Select>}> */
15-
private $where = [];
17+
/** @var array<int, array{DBWhereExpressionType, array<DBParameterValueType>}> */
18+
private array $where = [];
1619

1720
/**
1821
* @param string|array<string, mixed>|object|OptionalExpression $expression
19-
* @param null|scalar|array<int, null|scalar>|DBExpr|Select|DateTimeInterface ...$args
22+
* @param DBParameterValueType ...$args
2023
* @return $this
2124
*/
2225
public function where($expression, ...$args) {

0 commit comments

Comments
 (0)