1414use LogicException ;
1515use mysqli ;
1616use PDO ;
17- use PgSql \Connection as NativePgsqlConnection ;
1817use PHPStan \Platform \MatrixEntity \TestEntity ;
1918use PHPStan \Testing \PHPStanTestCase ;
2019use PHPStan \Type \ConstantTypeHelper ;
2827use function array_combine ;
2928use function array_keys ;
3029use function function_exists ;
31- use function get_class ;
3230use function get_debug_type ;
3331use function getenv ;
3432use function gettype ;
33+ use function is_a ;
3534use function is_resource ;
3635use function method_exists ;
3736use function reset ;
@@ -374,14 +373,14 @@ private function setupAttributes($nativeConnection, array $attributes): void
374373 }
375374 }
376375
377- } elseif ($ nativeConnection instanceof NativePgsqlConnection ) {
376+ } elseif (is_a ( $ nativeConnection, ' PgSql\Connection ' , true ) ) {
378377 if ($ attributes !== []) {
379- throw new LogicException ('Cannot set attributes for ' . NativePgsqlConnection::class . ' driver ' );
378+ throw new LogicException ('Cannot set attributes for PgSql\Connection driver ' );
380379 }
381380
382381 } elseif ($ nativeConnection instanceof SQLite3) {
383382 if ($ attributes !== []) {
384- throw new LogicException ('Cannot set attributes for ' . NativePgsqlConnection ::class . ' driver ' );
383+ throw new LogicException ('Cannot set attributes for ' . SQLite3 ::class . ' driver ' );
385384 }
386385
387386 } 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)
403402 return $ connection ->getNativeConnection ();
404403 }
405404
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+ }
409409
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+ }
412413 }
413414
414415 throw new LogicException ('Unable to get native connection ' );
0 commit comments