Skip to content

Commit 189072b

Browse files
committed
Add translation layer for PHP 7 and 8
1 parent 06d4686 commit 189072b

File tree

6 files changed

+139
-148
lines changed

6 files changed

+139
-148
lines changed

psalm-baseline.xml

Lines changed: 24 additions & 130 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<files psalm-version="4.3.2@57b53ff26237074fdf5cbcb034f7da5172be4524">
2+
<files psalm-version="dev-master@665170eadb6cb0728de7f70a52db0b339285f8dc">
33
<file src="src/DataIntegrity.php">
44
<MissingClosureParamType occurrences="2">
55
<code>$field</code>
@@ -8,9 +8,6 @@
88
<MissingParamType occurrences="1">
99
<code>$value</code>
1010
</MissingParamType>
11-
<MissingReturnType occurrences="1">
12-
<code>coerceValueToColumn</code>
13-
</MissingReturnType>
1411
<MixedArgument occurrences="3">
1512
<code>$column_default</code>
1613
<code>$unique_key</code>
@@ -23,13 +20,11 @@
2320
<code>$new_row[$key]</code>
2421
<code>$new_row[$key]</code>
2522
</MixedArrayOffset>
26-
<MixedAssignment occurrences="10">
23+
<MixedAssignment occurrences="8">
2724
<code>$column_default</code>
2825
<code>$index</code>
2926
<code>$key</code>
3027
<code>$row[$column_name]</code>
31-
<code>$row[$column_name]</code>
32-
<code>$row[$column_name]</code>
3328
<code>$unique_key</code>
3429
<code>$unique_keys[$name]</code>
3530
<code>$unique_keys['PRIMARY']</code>
@@ -56,101 +51,39 @@
5651
<code>$host</code>
5752
</PossiblyNullArgument>
5853
</file>
59-
<file src="src/FakePdoStatement.php">
54+
<file src="src/FakePdoTrait.php">
6055
<ArgumentTypeCoercion occurrences="1">
6156
<code>$class</code>
6257
</ArgumentTypeCoercion>
6358
<ForbiddenCode occurrences="2">
6459
<code>var_dump($this-&gt;getExecutedSql($this-&gt;boundValues), $real_result, $fake_result)</code>
6560
<code>var_dump($this-&gt;sql)</code>
6661
</ForbiddenCode>
67-
<InvalidDocblockParamName occurrences="2">
68-
<code>$args</code>
69-
<code>$fetch_style</code>
70-
</InvalidDocblockParamName>
71-
<MissingClosureParamType occurrences="2">
72-
<code>$row</code>
73-
<code>$row</code>
74-
</MissingClosureParamType>
75-
<MissingClosureReturnType occurrences="3">
76-
<code>function ($row) {</code>
77-
<code>function ($row) {</code>
78-
<code>function ($row) {</code>
79-
</MissingClosureReturnType>
80-
<MissingParamType occurrences="1">
81-
<code>$mode</code>
82-
</MissingParamType>
8362
<MissingPropertyType occurrences="1">
8463
<code>$fetchArgument</code>
8564
</MissingPropertyType>
86-
<MissingReturnType occurrences="3">
87-
<code>lowercaseKeys</code>
88-
<code>processResult</code>
89-
<code>stringify</code>
90-
</MissingReturnType>
91-
<MixedArgument occurrences="29">
92-
<code>$fake_result</code>
93-
<code>$fake_result</code>
65+
<MixedArgument occurrences="6">
66+
<code>$ctor_args</code>
67+
<code>$ctorargs</code>
9468
<code>$fetch_argument</code>
9569
<code>$fetch_argument</code>
96-
<code>$mode</code>
97-
<code>$row</code>
98-
<code>$row</code>
99-
<code>$row</code>
100-
<code>$row</code>
101-
<code>$row</code>
102-
<code>$row</code>
103-
<code>$row</code>
104-
<code>$row</code>
105-
<code>$row</code>
106-
<code>$row</code>
107-
<code>$row</code>
108-
<code>$row</code>
109-
<code>$row</code>
110-
<code>$row</code>
111-
<code>$row</code>
112-
<code>$row</code>
113-
<code>$row</code>
114-
<code>$row</code>
115-
<code>$row</code>
116-
<code>$row</code>
117-
<code>$row</code>
11870
<code>$this-&gt;fetchArgument</code>
11971
<code>$this-&gt;realStatement-&gt;errorInfo()[2]</code>
120-
<code>\reset($this-&gt;result)</code>
12172
</MixedArgument>
122-
<MixedArgumentTypeCoercion occurrences="1">
123-
<code>$col</code>
124-
</MixedArgumentTypeCoercion>
125-
<MixedAssignment occurrences="21">
126-
<code>$fake_result</code>
73+
<MixedAssignment occurrences="9">
74+
<code>$ctor_args</code>
75+
<code>$ctorargs</code>
12776
<code>$fetch_argument</code>
128-
<code>$lowercased_row[\strtolower($col)]</code>
129-
<code>$result[$i][\substr($key, 0, 255)]</code>
130-
<code>$row</code>
131-
<code>$row</code>
132-
<code>$row</code>
133-
<code>$row</code>
134-
<code>$row</code>
135-
<code>$row</code>
136-
<code>$row</code>
137-
<code>$row</code>
138-
<code>$row</code>
139-
<code>$row</code>
140-
<code>$row</code>
141-
<code>$this-&gt;fetchMode</code>
142-
<code>$this-&gt;result</code>
143-
<code>$value</code>
77+
<code>$fetch_argument</code>
78+
<code>$fetch_argument</code>
79+
<code>$this-&gt;fetchConstructorArgs</code>
14480
<code>$value</code>
14581
<code>$value</code>
14682
<code>$value</code>
14783
</MixedAssignment>
14884
<MixedMethodCall occurrences="1">
14985
<code>__construct</code>
15086
</MixedMethodCall>
151-
<MoreSpecificImplementedParamType occurrences="1">
152-
<code>$fetch_argument</code>
153-
</MoreSpecificImplementedParamType>
15487
<PossiblyInvalidCast occurrences="1">
15588
<code>$value</code>
15689
</PossiblyInvalidCast>
@@ -246,14 +179,6 @@
246179
</PossiblyNullArgument>
247180
</file>
248181
<file src="src/Parser/SQLLexer.php">
249-
<ArgumentTypeCoercion occurrences="1">
250-
<code>\PREG_SPLIT_DELIM_CAPTURE | \PREG_SPLIT_NO_EMPTY | \PREG_SPLIT_OFFSET_CAPTURE</code>
251-
</ArgumentTypeCoercion>
252-
<InvalidArgument occurrences="3">
253-
<code>$tokens</code>
254-
<code>$tokens</code>
255-
<code>$tokens</code>
256-
</InvalidArgument>
257182
<PossiblyNullArrayOffset occurrences="1">
258183
<code>$tokens</code>
259184
</PossiblyNullArrayOffset>
@@ -265,9 +190,6 @@
265190
<MissingPropertyType occurrences="1">
266191
<code>$cache</code>
267192
</MissingPropertyType>
268-
<MissingReturnType occurrences="1">
269-
<code>bustCache</code>
270-
</MissingReturnType>
271193
<MixedArgument occurrences="1">
272194
<code>self::$cache</code>
273195
</MixedArgument>
@@ -303,22 +225,21 @@
303225
<code>$token === null</code>
304226
</DocblockTypeContradiction>
305227
</file>
228+
<file src="src/Php7/FakePdoStatement.php">
229+
<MoreSpecificImplementedParamType occurrences="1">
230+
<code>$fetch_argument</code>
231+
</MoreSpecificImplementedParamType>
232+
</file>
233+
<file src="src/Php8/FakePdoStatement.php">
234+
<MethodSignatureMismatch occurrences="1">
235+
<code>public function fetchAll(int $fetch_style = -123, ...$args) : array</code>
236+
</MethodSignatureMismatch>
237+
</file>
306238
<file src="src/Processor/CreateProcessor.php">
307-
<MissingReturnType occurrences="2">
308-
<code>getIntegerDefinitionColumn</code>
309-
<code>getTextDefinitionColumn</code>
310-
</MissingReturnType>
311239
<MixedArgumentTypeCoercion occurrences="2">
312240
<code>$stmt-&gt;values</code>
313241
<code>$stmt-&gt;values</code>
314242
</MixedArgumentTypeCoercion>
315-
<MixedInferredReturnType occurrences="1">
316-
<code>Column</code>
317-
</MixedInferredReturnType>
318-
<MixedReturnStatement occurrences="2">
319-
<code>self::getIntegerDefinitionColumn($stmt)</code>
320-
<code>self::getTextDefinitionColumn($stmt)</code>
321-
</MixedReturnStatement>
322243
<PossiblyNullArgument occurrences="4">
323244
<code>$conn-&gt;databaseName</code>
324245
<code>$stmt-&gt;decimals</code>
@@ -447,13 +368,7 @@
447368
<code>$values</code>
448369
</ArgumentTypeCoercion>
449370
<DocblockTypeContradiction occurrences="6"/>
450-
<InvalidDocblockParamName occurrences="1">
451-
<code>$columns</code>
452-
</InvalidDocblockParamName>
453-
<MissingParamType occurrences="1">
454-
<code>$value</code>
455-
</MissingParamType>
456-
<MixedArgument occurrences="17">
371+
<MixedArgument occurrences="16">
457372
<code>$first</code>
458373
<code>$first_arg</code>
459374
<code>$first_arg</code>
@@ -470,12 +385,11 @@
470385
<code>$subject</code>
471386
<code>$subject</code>
472387
<code>$subject</code>
473-
<code>$value</code>
474388
</MixedArgument>
475389
<MixedArgumentTypeCoercion occurrences="1">
476390
<code>$row</code>
477391
</MixedArgumentTypeCoercion>
478-
<MixedAssignment occurrences="25">
392+
<MixedAssignment occurrences="23">
479393
<code>$column</code>
480394
<code>$first</code>
481395
<code>$first_arg</code>
@@ -499,8 +413,6 @@
499413
<code>$value</code>
500414
<code>$value</code>
501415
<code>$values[]</code>
502-
<code>$values[]</code>
503-
<code>$values[]</code>
504416
</MixedAssignment>
505417
<MixedInferredReturnType occurrences="1">
506418
<code>?numeric</code>
@@ -596,9 +508,6 @@
596508
<code>$a</code>
597509
<code>$b</code>
598510
</MissingClosureParamType>
599-
<MissingClosureReturnType occurrences="1">
600-
<code>function (array $a, array $b) use ($conn, $scope, $orders, $result) {</code>
601-
</MissingClosureReturnType>
602511
<MixedArgument occurrences="3">
603512
<code>$a[1]</code>
604513
<code>$b[1]</code>
@@ -658,12 +567,6 @@
658567
<code>$field</code>
659568
<code>$row</code>
660569
</MissingClosureParamType>
661-
<MissingClosureReturnType occurrences="1">
662-
<code>function ($row) {</code>
663-
</MissingClosureReturnType>
664-
<MissingReturnType occurrences="1">
665-
<code>processMultiQuery</code>
666-
</MissingReturnType>
667570
<MixedArgument occurrences="6">
668571
<code>$field</code>
669572
<code>$r</code>
@@ -699,13 +602,9 @@
699602
<code>$val</code>
700603
<code>$val</code>
701604
</MixedAssignment>
702-
<MixedInferredReturnType occurrences="1">
703-
<code>QueryResult</code>
704-
</MixedInferredReturnType>
705605
<MixedPropertyTypeCoercion occurrences="2">
706606
<code>array_merge($columns, $from_result-&gt;columns)</code>
707607
</MixedPropertyTypeCoercion>
708-
<MixedReturnStatement occurrences="1"/>
709608
<PossiblyNullArgument occurrences="1">
710609
<code>$stmt-&gt;fromClause</code>
711610
</PossiblyNullArgument>
@@ -778,11 +677,6 @@
778677
<code>(string) $this-&gt;type</code>
779678
</RedundantCastGivenDocblockType>
780679
</file>
781-
<file src="src/Query/Expression/IntervalOperatorExpression.php">
782-
<MissingReturnType occurrences="1">
783-
<code>setUnit</code>
784-
</MissingReturnType>
785-
</file>
786680
<file src="src/Query/MysqlColumnType.php">
787681
<MissingConstructor occurrences="4">
788682
<code>$character_set</code>

src/FakePdo.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,11 @@ public function getServer() : Server
7575
*/
7676
public function prepare($statement, $options = null)
7777
{
78-
return new FakePdoStatement($this, $statement, $this->real);
78+
if (\PHP_MAJOR_VERSION === 8) {
79+
return new Php8\FakePdoStatement($this, $statement, $this->real);
80+
}
81+
82+
return new Php7\FakePdoStatement($this, $statement, $this->real);
7983
}
8084

8185
public function lastInsertId($seqname = null) : string

src/FakePdoStatement.php renamed to src/FakePdoTrait.php

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?php
22
namespace Vimeo\MysqlEngine;
33

4-
class FakePdoStatement extends \PDOStatement
4+
trait FakePdoTrait
55
{
66
/**
77
* @var string
@@ -89,7 +89,7 @@ public function bindValue($key, $value, $type = \PDO::PARAM_STR) : void
8989
* @param ?array $params
9090
* @return bool
9191
*/
92-
public function execute($params = null)
92+
public function universalExecute(?array $params = null)
9393
{
9494
$sql = $this->sql;
9595

@@ -336,19 +336,17 @@ public function fetch(
336336

337337
/**
338338
* @param int $fetch_style
339-
* @param string $fetch_argument
340-
* @param array $ctor_args
339+
* @param mixed $args
341340
*/
342-
public function fetchAll($fetch_style = -123, $fetch_argument = null, $ctor_args = null) : array
341+
public function universalFetchAll(int $fetch_style = -123, ...$args) : array
343342
{
344343
if ($fetch_style === -123) {
345344
$fetch_style = $this->fetchMode;
346345
$fetch_argument = $this->fetchArgument;
347346
$ctor_args = $this->fetchConstructorArgs;
348347
} else {
349-
// may have to uncomment for PHP 8
350-
//$fetch_argument = $args[0] ?? null;
351-
//$ctor_args = $args[1] ?? [];
348+
$fetch_argument = $args[0] ?? null;
349+
$ctor_args = $args[1] ?? [];
352350
}
353351

354352
if ($fetch_style === \PDO::FETCH_ASSOC) {
@@ -442,15 +440,12 @@ function ($row) use ($fetch_argument, $ctor_args) {
442440

443441
/**
444442
* @param int $fetch_style
445-
* @param mixed $fetch_argument
446-
* @param array $ctorargs
447-
* @param array ...$args
443+
* @param mixed $args
448444
*/
449-
public function setFetchMode($mode, $fetch_argument = null, $ctorargs = []) : bool
445+
public function universalSetFetchMode(int $mode, ...$args) : bool
450446
{
451-
// may have to uncomment for PHP 8
452-
//$fetch_argument = $args[0] ?? null;
453-
//$ctorargs = $args[1] ?? [];
447+
$fetch_argument = $args[0] ?? null;
448+
$ctorargs = $args[1] ?? [];
454449

455450
if ($this->realStatement) {
456451
$this->realStatement->setFetchMode($mode, $fetch_argument, $ctorargs);
@@ -529,7 +524,7 @@ private static function lowercaseKeys(array $row): array
529524
* @param array|null $ctorArgs
530525
* @return false|T
531526
*/
532-
public function fetchObject($class = \stdClass::class, $ctorArgs = null)
527+
public function universalFetchObject(?string $class = \stdClass::class, ?array $ctorArgs = null)
533528
{
534529
throw new \Exception('not implemented');
535530
}

0 commit comments

Comments
 (0)