Skip to content

Commit d930145

Browse files
bnowakBartłomiej Nowak
andauthored
Support for doctrine/dbal v4 (#754)
Co-authored-by: Bartłomiej Nowak <[email protected]>
1 parent ae4b1ba commit d930145

16 files changed

+163
-22
lines changed

.github/workflows/tests.yml

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,57 +27,81 @@ jobs:
2727
# dependencies: "lowest"
2828

2929
- php-version: "7.4"
30+
dbal-version: "^3"
3031
db-image: 'mysql:8.0'
3132
reflector: "pdo-mysql"
3233
mode: "recording"
3334
dependencies: "highest"
3435
- php-version: "8.0"
36+
dbal-version: "^3"
3537
db-image: 'mysql:8.0'
3638
reflector: "pdo-mysql"
3739
mode: "recording"
3840
dependencies: "highest"
3941
- php-version: "8.0"
42+
dbal-version: "^3"
4043
db-image: 'mysql:8.0'
4144
reflector: "mysqli"
4245
mode: "recording"
4346
dependencies: "highest"
4447

4548
- php-version: "8.1"
49+
dbal-version: "^3"
4650
db-image: 'mysql:8.0'
4751
reflector: "mysqli"
4852
mode: "recording"
4953
dependencies: "highest"
5054
- php-version: '8.1'
55+
dbal-version: "^3"
5156
db-image: 'mariadb:latest'
5257
platform: 'mariadb'
5358
reflector: "mysqli"
5459
mode: "recording"
5560
dependencies: "highest"
5661

5762
- php-version: "8.2"
63+
dbal-version: "^3"
5864
db-image: 'mysql:8.0'
5965
reflector: "mysqli"
6066
mode: "recording"
6167
dependencies: "highest"
6268
- php-version: '8.2'
69+
dbal-version: "^3"
6370
db-image: 'mariadb:latest'
6471
platform: 'mariadb'
6572
reflector: "mysqli"
6673
mode: "recording"
6774
dependencies: "highest"
6875

76+
- php-version: "8.3"
77+
dbal-version: "^4"
78+
db-image: 'mysql:8.0'
79+
reflector: "mysqli"
80+
mode: "recording"
81+
dependencies: "highest"
82+
83+
- php-version: "8.4"
84+
dbal-version: "^4"
85+
db-image: 'mysql:8.0'
86+
reflector: "mysqli"
87+
mode: "recording"
88+
dependencies: "highest"
89+
6990
- php-version: "8.1"
91+
dbal-version: "^3"
7092
db-image: 'mysql:8.0'
7193
reflector: "pdo-mysql"
7294
mode: "replay-and-recording"
7395
dependencies: "highest"
7496

7597
- php-version: "8.1"
98+
dbal-version: "^3"
7699
db-image: 'mysql:8.0'
77100
reflector: "pdo-mysql"
78101
mode: "empty-recording"
79102
dependencies: "highest"
80103
- php-version: "8.1"
104+
dbal-version: "^3"
81105
db-image: 'mysql:8.0'
82106
reflector: "pdo-mysql"
83107
mode: "empty-replay-and-recording"
@@ -120,7 +144,7 @@ jobs:
120144
run: composer require sqlftw/sqlftw --ignore-platform-req=php+
121145

122146
- name: Install doctrine/dbal (optional dependency)
123-
run: composer require doctrine/dbal:^3 --ignore-platform-req=php+
147+
run: "composer require doctrine/dbal:${{ matrix.dbal-version }} --ignore-platform-req=php+"
124148

125149
- name: Setup Problem Matchers for PHPUnit
126150
run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"php": "^7.4 || ^8.0",
88
"composer-runtime-api": "^2.0",
99
"composer/semver": "^3.2",
10-
"doctrine/dbal": "3.*",
10+
"doctrine/dbal": "3.*|4.*",
1111
"phpstan/phpstan": "^2.0"
1212
},
1313
"require-dev": {

config/rules.neon

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ services:
4646
- 'PDO::prepare#0'
4747
- 'mysqli::query#0'
4848
- 'mysqli::execute_query#0'
49+
- 'Doctrine\DBAL\Connection::executeQuery#0'
50+
- 'Doctrine\DBAL\Connection::executeStatement#0'
4951
- 'Doctrine\DBAL\Connection::query#0' # deprecated in doctrine
5052
- 'Doctrine\DBAL\Connection::exec#0' # deprecated in doctrine
5153

src/Extensions/DoctrineConnectionExecuteQueryDynamicReturnTypeExtension.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public function getTypeFromMethodCall(MethodReflection $methodReflection, Method
4444
}
4545

4646
// make sure we don't report wrong types in doctrine 2.x
47-
if (! InstalledVersions::satisfies(new VersionParser(), 'doctrine/dbal', '3.*')) {
47+
if (! InstalledVersions::satisfies(new VersionParser(), 'doctrine/dbal', '3.*|4.*')) {
4848
return null;
4949
}
5050

src/Extensions/DoctrineConnectionFetchDynamicReturnTypeExtension.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public function getTypeFromMethodCall(MethodReflection $methodReflection, Method
5757
}
5858

5959
// make sure we don't report wrong types in doctrine 2.x
60-
if (! InstalledVersions::satisfies(new VersionParser(), 'doctrine/dbal', '3.*')) {
60+
if (! InstalledVersions::satisfies(new VersionParser(), 'doctrine/dbal', '3.*|4.*')) {
6161
return null;
6262
}
6363

src/Extensions/DoctrineConnectionPrepareDynamicReturnTypeExtension.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public function getTypeFromMethodCall(MethodReflection $methodReflection, Method
4444
}
4545

4646
// make sure we don't report wrong types in doctrine 2.x
47-
if (! InstalledVersions::satisfies(new VersionParser(), 'doctrine/dbal', '3.*')) {
47+
if (! InstalledVersions::satisfies(new VersionParser(), 'doctrine/dbal', '3.*|4.*')) {
4848
return null;
4949
}
5050

src/Extensions/DoctrineConnectionQueryDynamicReturnTypeExtension.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public function getTypeFromMethodCall(MethodReflection $methodReflection, Method
4444
}
4545

4646
// make sure we don't report wrong types in doctrine 2.x
47-
if (! InstalledVersions::satisfies(new VersionParser(), 'doctrine/dbal', '3.*')) {
47+
if (! InstalledVersions::satisfies(new VersionParser(), 'doctrine/dbal', '3.*|4.*')) {
4848
return null;
4949
}
5050

src/Extensions/DoctrineResultDynamicReturnTypeExtension.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public function isMethodSupported(MethodReflection $methodReflection): bool
4848
public function getTypeFromMethodCall(MethodReflection $methodReflection, MethodCall $methodCall, Scope $scope): ?Type
4949
{
5050
// make sure we don't report wrong types in doctrine 2.x
51-
if (! InstalledVersions::satisfies(new VersionParser(), 'doctrine/dbal', '3.*')) {
51+
if (! InstalledVersions::satisfies(new VersionParser(), 'doctrine/dbal', '3.*|4.*')) {
5252
return null;
5353
}
5454

src/Extensions/DoctrineStatementExecuteDynamicReturnTypeExtension.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public function getTypeFromMethodCall(MethodReflection $methodReflection, Method
4040
}
4141

4242
// make sure we don't report wrong types in doctrine 2.x
43-
if (! InstalledVersions::satisfies(new VersionParser(), 'doctrine/dbal', '3.*')) {
43+
if (! InstalledVersions::satisfies(new VersionParser(), 'doctrine/dbal', '3.*|4.*')) {
4444
return null;
4545
}
4646

tests/default/DbaInferenceTest.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ public function dataFileAsserts(): iterable
1818
}
1919

2020
yield from $this->gatherAssertTypes(__DIR__ . '/data/doctrine-dbal-union-result.php');
21+
if (InstalledVersions::satisfies(new VersionParser(), 'doctrine/dbal', '3.*')) {
22+
yield from $this->gatherAssertTypes(__DIR__ . '/data/doctrine-dbal3.php');
23+
}
2124
yield from $this->gatherAssertTypes(__DIR__ . '/data/doctrine-dbal.php');
2225
yield from $this->gatherAssertTypes(__DIR__ . '/data/inference-placeholder.php');
2326

0 commit comments

Comments
 (0)