Skip to content

Commit 02558ca

Browse files
committed
Better type-hinting for methods that take sql statements
1 parent 6f2ee6b commit 02558ca

File tree

2 files changed

+31
-8
lines changed

2 files changed

+31
-8
lines changed

src/Database.php

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
<?php
22
namespace Kir\MySQL;
33

4+
use JetBrains\PhpStorm\Language;
45
use Kir\MySQL\Builder\QueryStatement;
56
use Kir\MySQL\Database\DatabaseStatement;
67
use Kir\MySQL\Tools\AliasRegistry;
78
use Kir\MySQL\Tools\VirtualTables;
9+
use Stringable;
810

911
interface Database {
1012
/**
@@ -21,20 +23,30 @@ public function getVirtualTables(): VirtualTables;
2123
* @param string $query
2224
* @return DatabaseStatement
2325
*/
24-
public function query(string $query);
26+
public function query(
27+
#[Language('MySQL')]
28+
string $query
29+
);
2530

2631
/**
2732
* @param string $query
2833
* @return QueryStatement
2934
*/
30-
public function prepare(string $query);
35+
public function prepare(
36+
#[Language('MySQL')]
37+
string $query
38+
);
3139

3240
/**
3341
* @param string $query
34-
* @param array<string, mixed> $params
42+
* @param array<string, null|scalar|Stringable|array<null|scalar>> $params
3543
* @return int
3644
*/
37-
public function exec(string $query, array $params = []): int;
45+
public function exec(
46+
#[Language('MySQL')]
47+
string $query,
48+
array $params = []
49+
): int;
3850

3951
/**
4052
* @param string|null $name

src/Databases/MySQL.php

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
namespace Kir\MySQL\Databases;
33

44
use DateTimeZone;
5+
use JetBrains\PhpStorm\Language;
56
use Kir\MySQL\Builder;
67
use Kir\MySQL\Builder\DBExpr;
78
use Kir\MySQL\Builder\QueryStatement;
@@ -99,7 +100,10 @@ public function getVirtualTables(): VirtualTables {
99100
* @param string $query
100101
* @return QueryStatement
101102
*/
102-
public function query(string $query) {
103+
public function query(
104+
#[Language('MySQL')]
105+
string $query
106+
) {
103107
return $this->getQueryLoggers()->logRegion($query, function() use ($query) {
104108
return $this->buildQueryStatement($query, function ($query) {
105109
return $this->pdo->query($query);
@@ -111,18 +115,25 @@ public function query(string $query) {
111115
* @param string $query
112116
* @return QueryStatement
113117
*/
114-
public function prepare(string $query) {
118+
public function prepare(
119+
#[Language('MySQL')]
120+
string $query
121+
) {
115122
return $this->buildQueryStatement((string) $query, function ($query) {
116123
return $this->pdo->prepare($query);
117124
});
118125
}
119126

120127
/**
121128
* @param string $query
122-
* @param array<string, mixed> $params
129+
* @param array<string, null|scalar|Stringable|array<null|scalar>> $params
123130
* @return int
124131
*/
125-
public function exec(string $query, array $params = []): int {
132+
public function exec(
133+
#[Language('MySQL')]
134+
string $query,
135+
array $params = []
136+
): int {
126137
return $this->getQueryLoggers()->logRegion($query, function() use ($query, $params) {
127138
return $this->exceptionHandler(function () use ($query, $params) {
128139
$stmt = $this->pdo->prepare($query);

0 commit comments

Comments
 (0)