Skip to content

Commit e027673

Browse files
committed
Reorganized imports; fixed some issues reported by phpstan and hinted some false positives
1 parent 34016b9 commit e027673

21 files changed

+56
-35
lines changed

composer.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
},
1717
"require-dev": {
1818
"phpunit/phpunit": ">= 6.0",
19-
"phpstan/phpstan": "*@stable",
19+
"phpstan/phpstan": ">= 0.1",
2020
"jetbrains/phpstorm-attributes": "^1.0"
2121
},
2222
"autoload": {

src/Builder/Expr/DBOrderSpec.php

-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22

33
namespace Kir\MySQL\Builder\Expr;
44

5-
use RuntimeException;
6-
75
/**
86
* Defines fields that are sortable. Sortable fields have an alias.
97
* The alias can be passed as a sort specifier - along with the direction in which to sort.

src/Builder/Insert.php

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

4-
use Kir\MySQL\Databases\MySQL\MySQLSelect;
4+
use DateTimeInterface;
55
use Kir\MySQL\Tools\AliasReplacer;
66
use RuntimeException;
77
use Traversable;
@@ -54,7 +54,7 @@ public function setKey(string $field) {
5454

5555
/**
5656
* @param string $field
57-
* @param null|bool|int|float|string $value
57+
* @param null|bool|int|float|string|DateTimeInterface $value
5858
* @return $this
5959
*/
6060
public function add(string $field, $value) {
@@ -64,7 +64,7 @@ public function add(string $field, $value) {
6464

6565
/**
6666
* @param string $field
67-
* @param null|bool|int|float|string $value
67+
* @param null|bool|int|float|string|DateTimeInterface $value
6868
* @return $this
6969
*/
7070
public function update(string $field, $value) {
@@ -74,7 +74,7 @@ public function update(string $field, $value) {
7474

7575
/**
7676
* @param string $field
77-
* @param null|bool|int|float|string $value
77+
* @param null|bool|int|float|string|DateTimeInterface $value
7878
* @return $this
7979
*/
8080
public function addOrUpdate(string $field, $value) {
@@ -128,7 +128,7 @@ public function addOrUpdateExpr(string $expr, ...$args) {
128128
}
129129

130130
/**
131-
* @param array<string, mixed> $data
131+
* @param array<string, null|bool|int|float|string|DateTimeInterface> $data
132132
* @param array<int, string>|null $mask
133133
* @param array<int, string>|null $excludeFields
134134
* @return $this
@@ -141,7 +141,7 @@ public function addAll(array $data, array $mask = null, array $excludeFields = n
141141
}
142142

143143
/**
144-
* @param array<string, mixed> $data
144+
* @param array<string, null|bool|int|float|string|DateTimeInterface> $data
145145
* @param array<int, string>|null $mask
146146
* @param array<int, string>|null $excludeFields
147147
* @return $this
@@ -156,7 +156,7 @@ public function updateAll(array $data, array $mask = null, array $excludeFields
156156
}
157157

158158
/**
159-
* @param array<string, mixed> $data
159+
* @param array<string, null|bool|int|float|string|DateTimeInterface> $data
160160
* @param array<int, string>|null $mask
161161
* @param array<int, string>|null $excludeFields
162162
* @return $this

src/Builder/InsertUpdateStatement.php

-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22
namespace Kir\MySQL\Builder;
33

44
use Kir\MySQL\Builder\Internal\DefaultValue;
5-
use Kir\MySQL\Builder\DBExpr;
6-
use Kir\MySQL\Builder\Select;
75

86
abstract class InsertUpdateStatement extends Statement {
97
/** @var array<int, string> */

src/Builder/Internal/ConditionBuilder.php

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

4+
use Kir\MySQL\Builder;
45
use Kir\MySQL\Builder\Expr\OptionalExpression;
56
use Kir\MySQL\Database;
6-
use Kir\MySQL\Builder;
77

88
final class ConditionBuilder {
99
/**

src/Builder/Internal/DDLRunnable.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@
99
class DDLRunnable {
1010
/** @var DatabaseStatement */
1111
private $query;
12-
/** @var null|callable(): T */
12+
/** @var null|callable(scalar=): T */
1313
private $callbackFn;
1414

1515
/**
1616
* @param DatabaseStatement $query
17-
* @param null|callable(): T $callbackFn
17+
* @param null|callable(scalar=): T $callbackFn
1818
*/
1919
public function __construct(DatabaseStatement $query, ?callable $callbackFn = null) {
2020
$this->query = $query;

src/Builder/QueryStatement.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
<?php
22
namespace Kir\MySQL\Builder;
33

4+
use Kir\MySQL\Database\DatabaseStatement;
45
use Kir\MySQL\Databases\MySQL\MySQLExceptionInterpreter;
56
use Kir\MySQL\Exceptions\SqlException;
7+
use Kir\MySQL\QueryLogger\QueryLoggers;
68
use PDO;
79
use PDOException;
810
use PDOStatement;
9-
use Kir\MySQL\Database\DatabaseStatement;
10-
use Kir\MySQL\QueryLogger\QueryLoggers;
1111

1212
class QueryStatement implements DatabaseStatement {
1313
/** @var PDOStatement<mixed> */

src/Builder/RunnableDelete.php

+10-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,15 @@ public function run(array $params = []) {
2424
* @return DDLRunnable<int>
2525
*/
2626
public function prepare(): DDLRunnable {
27-
return $this->createPreparable($this->db()->prepare($this), 'intval');
27+
return $this->createPreparable(
28+
$this->db()->prepare($this),
29+
/**
30+
* @param scalar $v
31+
* @return int
32+
*/
33+
function ($v) {
34+
return (int) $v;
35+
}
36+
);
2837
}
2938
}

src/Builder/RunnableSelect.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33

44
use Generator;
55
use IteratorAggregate;
6-
use Kir\MySQL\Tools\AliasReplacer;
76
use Kir\MySQL\Builder\Helpers\DBIgnoreRow;
7+
use Kir\MySQL\Tools\AliasReplacer;
88
use Traversable;
99

1010
/**

src/Builder/RunnableUpdate.php

+10-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,15 @@ public function run(array $params = []): int {
2424
* @return DDLRunnable<int>
2525
*/
2626
public function prepare(): DDLRunnable {
27-
return $this->createPreparable($this->db()->prepare($this), 'intval');
27+
return $this->createPreparable(
28+
$this->db()->prepare($this),
29+
/**
30+
* @param bool|int|float|string $v
31+
* @return int
32+
*/
33+
function ($v) {
34+
return (int) $v;
35+
}
36+
);
2837
}
2938
}

src/Builder/Traits/CreateDDLRunnable.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,11 @@
1010
trait CreateDDLRunnable {
1111
/**
1212
* @param DatabaseStatement $query
13-
* @param callable(scalar=): T $callbackFn
13+
* @param callable(scalar): T $callbackFn
1414
* @return DDLRunnable<T>
1515
*/
1616
public function createPreparable(DatabaseStatement $query, $callbackFn): DDLRunnable {
17+
// @phpstan-ignore-next-line
1718
return new DDLRunnable($query, $callbackFn);
1819
}
1920
}

src/Builder/Traits/HavingBuilder.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33

44
use DateTimeInterface;
55
use Kir\MySQL\Builder\DBExpr;
6-
use Kir\MySQL\Builder\Select;
76
use Kir\MySQL\Builder\Expr\OptionalExpression;
87
use Kir\MySQL\Builder\Helpers\ConditionAddHelper;
98
use Kir\MySQL\Builder\Internal\ConditionBuilder;
9+
use Kir\MySQL\Builder\Select;
1010

1111
trait HavingBuilder {
1212
use AbstractDB;

src/Builder/Traits/JoinBuilder.php

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

4-
use Kir\MySQL\Builder\Select;
54
use Kir\MySQL\Builder\DBExpr;
5+
use Kir\MySQL\Builder\Select;
66
use Kir\MySQL\Tools\VirtualTable;
77

88
trait JoinBuilder {

src/Builder/Traits/UnionBuilder.php

-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
namespace Kir\MySQL\Builder\Traits;
33

44
use Kir\MySQL\Builder\Select;
5-
use Kir\MySQL\Databases\MySQL\MySQLSelect;
65

76
trait UnionBuilder {
87
use AbstractDB;

src/Builder/Traits/WhereBuilder.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33

44
use DateTimeInterface;
55
use Kir\MySQL\Builder\DBExpr;
6-
use Kir\MySQL\Builder\Select;
76
use Kir\MySQL\Builder\Expr\OptionalExpression;
87
use Kir\MySQL\Builder\Helpers\ConditionAddHelper;
98
use Kir\MySQL\Builder\Internal\ConditionBuilder;
9+
use Kir\MySQL\Builder\Select;
1010

1111
trait WhereBuilder {
1212
use AbstractDB;

src/Databases/MySQL.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,17 @@
1010
use Kir\MySQL\Database;
1111
use Kir\MySQL\Databases\MySQL\MySQLExceptionInterpreter;
1212
use Kir\MySQL\Databases\MySQL\MySQLFieldQuoter;
13+
use Kir\MySQL\Databases\MySQL\MySQLQuoter;
1314
use Kir\MySQL\Databases\MySQL\MySQLRunnableSelect;
1415
use Kir\MySQL\Databases\MySQL\MySQLUUIDGenerator;
15-
use Kir\MySQL\Databases\MySQL\MySQLQuoter;
1616
use Kir\MySQL\QueryLogger\QueryLoggers;
1717
use Kir\MySQL\Tools\AliasRegistry;
1818
use Kir\MySQL\Tools\VirtualTables;
1919
use PDO;
2020
use PDOException;
2121
use RuntimeException;
22+
use Stringable;
2223
use Throwable;
23-
use phpDocumentor\Reflection\Types\Scalar;
2424

2525
/**
2626
*/

src/Databases/MySQL/MySQLExceptionInterpreter.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22
namespace Kir\MySQL\Databases\MySQL;
33

44
use Kir\MySQL\Exceptions\DatabaseHasGoneAwayException;
5+
use Kir\MySQL\Exceptions\DuplicateUniqueKeyException;
56
use Kir\MySQL\Exceptions\IntegrityConstraintViolationException;
7+
use Kir\MySQL\Exceptions\LockWaitTimeoutExceededException;
8+
use Kir\MySQL\Exceptions\SqlDeadLockException;
69
use Kir\MySQL\Exceptions\SqlException;
710
use PDOException;
8-
use Kir\MySQL\Exceptions\SqlDeadLockException;
9-
use Kir\MySQL\Exceptions\DuplicateUniqueKeyException;
10-
use Kir\MySQL\Exceptions\LockWaitTimeoutExceededException;
1111

1212
class MySQLExceptionInterpreter {
1313
/**

src/Databases/MySQL/MySQLQuoter.php

+1-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
use Kir\MySQL\Builder\DBExpr;
77
use Kir\MySQL\Builder\Select;
88
use PDO;
9-
use phpDocumentor\Reflection\Types\Scalar;
109

1110
class MySQLQuoter {
1211
/** @var PDO */
@@ -20,7 +19,7 @@ public function __construct(PDO $pdo, DateTimeZone $timeZone) {
2019
}
2120

2221
/**
23-
* @param null|bool|int|float|string|array<int, null|scalar>|DBExpr|Select|DateTimeInterface $value
22+
* @param null|scalar|array<int, null|scalar>|DBExpr|Select|DateTimeInterface $value
2423
* @return string
2524
*/
2625
public function quote($value): string {

src/Databases/MySQL/MySQLRunnableSelect.php

-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
use Kir\MySQL\Builder\Helpers\FieldTypeProvider;
88
use Kir\MySQL\Builder\Helpers\FieldValueConverter;
99
use Kir\MySQL\Builder\QueryStatement;
10-
use Kir\MySQL\Builder\RunnableSelect;
1110
use Kir\MySQL\Databases\MySQL;
1211
use PDO;
1312
use stdClass;

src/Databases/MySQL/MySQLSelect.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66
use Kir\MySQL\Builder\Statement;
77
use Kir\MySQL\Builder\Traits\GroupByBuilder;
88
use Kir\MySQL\Builder\Traits\HavingBuilder;
9+
use Kir\MySQL\Builder\Traits\JoinBuilder;
10+
use Kir\MySQL\Builder\Traits\LimitBuilder;
911
use Kir\MySQL\Builder\Traits\OffsetBuilder;
1012
use Kir\MySQL\Builder\Traits\OrderByBuilder;
1113
use Kir\MySQL\Builder\Traits\TableBuilder;
12-
use Kir\MySQL\Builder\Traits\JoinBuilder;
13-
use Kir\MySQL\Builder\Traits\LimitBuilder;
1414
use Kir\MySQL\Builder\Traits\TableNameBuilder;
1515
use Kir\MySQL\Builder\Traits\UnionBuilder;
1616
use Kir\MySQL\Builder\Traits\WhereBuilder;

tests/Databases/MySQLTest.php

+9
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,7 @@ public function testInfoLoggingFromQuery(): void {
175175
}));
176176
$query = 'SELECT COUNT(*) FROM test1';
177177
$db->query($query)->fetchColumn(0);
178+
// @phpstan-ignore-next-line
178179
self::assertEquals($query, $log->queries[0]['query'] ?? null);
179180
}
180181

@@ -188,7 +189,9 @@ public function testErrorLoggingFromQuery(): void {
188189
try {
189190
$db->query($query)->fetchColumn(0);
190191
} catch (PDOException $e) {}
192+
// @phpstan-ignore-next-line
191193
self::assertEquals($query, $log->queries[0]['query'] ?? null);
194+
// @phpstan-ignore-next-line
192195
self::assertStringContainsString('SQLSTATE[42S02]', ($log->queries[0]['exception'] ?? null)->getMessage());
193196
}
194197

@@ -200,6 +203,7 @@ public function testInfoLoggingFromExec(): void {
200203
}));
201204
$query = 'SET @foo = 1';
202205
$db->exec($query);
206+
// @phpstan-ignore-next-line
203207
self::assertEquals($query, $log->queries[0]['query'] ?? null);
204208
}
205209

@@ -213,7 +217,9 @@ public function testErrorLoggingFromExec(): void {
213217
try {
214218
$db->exec($query);
215219
} catch (PDOException $e) {}
220+
// @phpstan-ignore-next-line
216221
self::assertEquals($query, $log->queries[0]['query'] ?? null);
222+
// @phpstan-ignore-next-line
217223
self::assertStringContainsString('SQLSTATE[42S02]', ($log->queries[0]['exception'] ?? null)->getMessage());
218224
}
219225

@@ -225,6 +231,7 @@ public function testInfoLoggingFromGetTableFields(): void {
225231
}));
226232
$query = 'DESCRIBE test1';
227233
$db->getTableFields('test1');
234+
// @phpstan-ignore-next-line
228235
self::assertEquals($query, $log->queries[0]['query'] ?? null);
229236
}
230237

@@ -238,7 +245,9 @@ public function testErrorLoggingFromGetTableFields(): void {
238245
try {
239246
$db->getTableFields('test1_');
240247
} catch (PDOException $e) {}
248+
// @phpstan-ignore-next-line
241249
self::assertEquals($query, $log->queries[0]['query'] ?? null);
250+
// @phpstan-ignore-next-line
242251
self::assertStringContainsString('SQLSTATE[42S02]', ($log->queries[0]['exception'] ?? null)->getMessage());
243252
}
244253
}

0 commit comments

Comments
 (0)