|
3 | 3 | namespace Laminas\Db\Adapter\Driver\Pdo; |
4 | 4 |
|
5 | 5 | use Laminas\Db\Adapter\Driver\AbstractConnection; |
| 6 | +use Laminas\Db\Adapter\Driver\DriverInterface; |
6 | 7 | use Laminas\Db\Adapter\Driver\PdoDriverInterface; |
7 | 8 | use Laminas\Db\Adapter\Driver\ResultInterface; |
8 | 9 | use Laminas\Db\Adapter\Driver\StatementInterface; |
@@ -56,24 +57,34 @@ public function setDriver(PdoDriverInterface $driver): static |
56 | 57 | public function setConnectionParameters(array $connectionParameters): static |
57 | 58 | { |
58 | 59 | $this->connectionParameters = $connectionParameters; |
| 60 | + |
59 | 61 | if (isset($connectionParameters['dsn'])) { |
60 | | - $this->driverName = substr( |
61 | | - $connectionParameters['dsn'], |
62 | | - 0, |
63 | | - strpos($connectionParameters['dsn'], ':') |
64 | | - ); |
| 62 | + $driverName = $this->getDriverNameFromParameter($connectionParameters['dsn']); |
65 | 63 | } elseif (isset($connectionParameters['pdodriver'])) { |
66 | | - $this->driverName = strtolower($connectionParameters['pdodriver']); |
| 64 | + $driverName = $this->getDriverNameFromParameter($connectionParameters['pdodriver']); |
67 | 65 | } elseif (isset($connectionParameters['driver'])) { |
68 | | - $this->driverName = strtolower(substr( |
69 | | - str_replace(['-', '_', ' '], '', $connectionParameters['driver']), |
70 | | - 3 |
71 | | - )); |
| 66 | + $driverName = $this->getDriverNameFromParameter($connectionParameters['driver']); |
72 | 67 | } |
73 | 68 |
|
| 69 | + $this->driverName = strtolower($driverName); |
| 70 | + |
74 | 71 | return $this; |
75 | 72 | } |
76 | 73 |
|
| 74 | + protected function getDriverNameFromParameter(mixed $parameter): string |
| 75 | + { |
| 76 | + if ($parameter instanceof DriverInterface) { |
| 77 | + return $parameter->getDatabasePlatformName(); |
| 78 | + } elseif (is_string($parameter)) { |
| 79 | + if (str_contains($parameter, ':')) { |
| 80 | + return substr($parameter, 0, strpos($parameter, ':')); |
| 81 | + } |
| 82 | + return substr(str_replace(['-', '_', ' '], '', $parameter), 3); |
| 83 | + } |
| 84 | + |
| 85 | + return ''; |
| 86 | + } |
| 87 | + |
77 | 88 | /** |
78 | 89 | * Get the dsn string for this connection |
79 | 90 | * |
|
0 commit comments