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 ;
3231use function get_debug_type ;
3332use function getenv ;
3433use function gettype ;
34+ use function is_a ;
3535use function is_resource ;
3636use function method_exists ;
3737use function reset ;
@@ -374,14 +374,14 @@ private function setupAttributes($nativeConnection, array $attributes): void
374374 }
375375 }
376376
377- } elseif ($ nativeConnection instanceof NativePgsqlConnection ) {
377+ } elseif (is_a ( $ nativeConnection, ' PgSql\Connection ' , true ) ) {
378378 if ($ attributes !== []) {
379- throw new LogicException ('Cannot set attributes for ' . NativePgsqlConnection::class . ' driver ' );
379+ throw new LogicException ('Cannot set attributes for PgSql\Connection driver ' );
380380 }
381381
382382 } elseif ($ nativeConnection instanceof SQLite3) {
383383 if ($ attributes !== []) {
384- throw new LogicException ('Cannot set attributes for ' . NativePgsqlConnection ::class . ' driver ' );
384+ throw new LogicException ('Cannot set attributes for ' . SQLite3 ::class . ' driver ' );
385385 }
386386
387387 } elseif (is_resource ($ nativeConnection )) { // e.g. `resource (pgsql link)` on PHP < 8.1 with pgsql driver
@@ -403,12 +403,14 @@ private function getNativeConnection(Connection $connection)
403403 return $ connection ->getNativeConnection ();
404404 }
405405
406- if ($ connection ->getWrappedConnection () instanceof PDO ) {
407- return $ connection ->getWrappedConnection ();
408- }
406+ if (method_exists ($ connection , 'getWrappedConnection ' )) {
407+ if ($ connection ->getWrappedConnection () instanceof PDO ) {
408+ return $ connection ->getWrappedConnection ();
409+ }
409410
410- if (get_class ($ connection ->getWrappedConnection ()) === 'Doctrine\DBAL\Driver\Mysqli\MysqliConnection ' && method_exists ($ connection ->getWrappedConnection (), 'getWrappedResourceHandle ' )) {
411- return $ connection ->getWrappedConnection ()->getWrappedResourceHandle ();
411+ if (get_class ($ connection ->getWrappedConnection ()) === 'Doctrine\DBAL\Driver\Mysqli\MysqliConnection ' && method_exists ($ connection ->getWrappedConnection (), 'getWrappedResourceHandle ' )) {
412+ return $ connection ->getWrappedConnection ()->getWrappedResourceHandle ();
413+ }
412414 }
413415
414416 throw new LogicException ('Unable to get native connection ' );
0 commit comments