14
14
use LogicException ;
15
15
use mysqli ;
16
16
use PDO ;
17
- use PgSql \Connection as NativePgsqlConnection ;
18
17
use PHPStan \Platform \MatrixEntity \TestEntity ;
19
18
use PHPStan \Testing \PHPStanTestCase ;
20
19
use PHPStan \Type \ConstantTypeHelper ;
28
27
use function array_combine ;
29
28
use function array_keys ;
30
29
use function function_exists ;
31
- use function get_class ;
32
30
use function get_debug_type ;
33
31
use function getenv ;
34
32
use function gettype ;
33
+ use function is_a ;
35
34
use function is_resource ;
36
35
use function method_exists ;
37
36
use function reset ;
@@ -374,14 +373,14 @@ private function setupAttributes($nativeConnection, array $attributes): void
374
373
}
375
374
}
376
375
377
- } elseif ($ nativeConnection instanceof NativePgsqlConnection ) {
376
+ } elseif (is_a ( $ nativeConnection, ' PgSql\Connection ' , true ) ) {
378
377
if ($ attributes !== []) {
379
- throw new LogicException ('Cannot set attributes for ' . NativePgsqlConnection::class . ' driver ' );
378
+ throw new LogicException ('Cannot set attributes for PgSql\Connection driver ' );
380
379
}
381
380
382
381
} elseif ($ nativeConnection instanceof SQLite3) {
383
382
if ($ attributes !== []) {
384
- throw new LogicException ('Cannot set attributes for ' . NativePgsqlConnection ::class . ' driver ' );
383
+ throw new LogicException ('Cannot set attributes for ' . SQLite3 ::class . ' driver ' );
385
384
}
386
385
387
386
} elseif (is_resource ($ nativeConnection )) { // e.g. `resource (pgsql link)` on PHP < 8.1 with pgsql driver
@@ -403,12 +402,14 @@ private function getNativeConnection(Connection $connection)
403
402
return $ connection ->getNativeConnection ();
404
403
}
405
404
406
- if ($ connection ->getWrappedConnection () instanceof PDO ) {
407
- return $ connection ->getWrappedConnection ();
408
- }
405
+ if (method_exists ($ connection , 'getWrappedConnection ' )) {
406
+ if ($ connection ->getWrappedConnection () instanceof PDO ) {
407
+ return $ connection ->getWrappedConnection ();
408
+ }
409
409
410
- if (get_class ($ connection ->getWrappedConnection ()) === 'Doctrine\DBAL\Driver\Mysqli\MysqliConnection ' && method_exists ($ connection ->getWrappedConnection (), 'getWrappedResourceHandle ' )) {
411
- return $ connection ->getWrappedConnection ()->getWrappedResourceHandle ();
410
+ if (method_exists ($ connection ->getWrappedConnection (), 'getWrappedResourceHandle ' )) {
411
+ return $ connection ->getWrappedConnection ()->getWrappedResourceHandle ();
412
+ }
412
413
}
413
414
414
415
throw new LogicException ('Unable to get native connection ' );
0 commit comments