mirror of
https://github.com/dg/dibi.git
synced 2025-08-06 14:16:39 +02:00
PdoDriver: check for misconfigured PDO connections resource (#294)
This commit is contained in:
@@ -69,6 +69,10 @@ class PdoDriver implements Dibi\Driver
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($this->connection->getAttribute(PDO::ATTR_ERRMODE) !== PDO::ERRMODE_SILENT) {
|
||||||
|
throw new Dibi\DriverException('PDO connection in exception or warning error mode is not supported.');
|
||||||
|
}
|
||||||
|
|
||||||
$this->driverName = $this->connection->getAttribute(PDO::ATTR_DRIVER_NAME);
|
$this->driverName = $this->connection->getAttribute(PDO::ATTR_DRIVER_NAME);
|
||||||
$this->serverVersion = (string) ($config['version'] ?? @$this->connection->getAttribute(PDO::ATTR_SERVER_VERSION)); // @ - may be not supported
|
$this->serverVersion = (string) ($config['version'] ?? @$this->connection->getAttribute(PDO::ATTR_SERVER_VERSION)); // @ - may be not supported
|
||||||
}
|
}
|
||||||
|
41
tests/dibi/PdoDriver.providedConnection.phpt
Normal file
41
tests/dibi/PdoDriver.providedConnection.phpt
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
use Tester\Assert;
|
||||||
|
|
||||||
|
require __DIR__ . '/bootstrap.php';
|
||||||
|
|
||||||
|
|
||||||
|
function buildPdoDriver(?int $errorMode)
|
||||||
|
{
|
||||||
|
$pdo = new PDO('sqlite::memory:');
|
||||||
|
if ($errorMode !== null) {
|
||||||
|
$pdo->setAttribute(PDO::ATTR_ERRMODE, $errorMode);
|
||||||
|
}
|
||||||
|
new Dibi\Drivers\PdoDriver(['resource' => $pdo]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// PDO error mode: exception
|
||||||
|
Assert::exception(function () {
|
||||||
|
buildPdoDriver(PDO::ERRMODE_EXCEPTION);
|
||||||
|
}, Dibi\DriverException::class, 'PDO connection in exception or warning error mode is not supported.');
|
||||||
|
|
||||||
|
|
||||||
|
// PDO error mode: warning
|
||||||
|
Assert::exception(function () {
|
||||||
|
buildPdoDriver(PDO::ERRMODE_WARNING);
|
||||||
|
}, Dibi\DriverException::class, 'PDO connection in exception or warning error mode is not supported.');
|
||||||
|
|
||||||
|
|
||||||
|
// PDO error mode: explicitly set silent
|
||||||
|
test(function () {
|
||||||
|
buildPdoDriver(PDO::ERRMODE_SILENT);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// PDO error mode: implicitly set silent
|
||||||
|
test(function () {
|
||||||
|
buildPdoDriver(null);
|
||||||
|
});
|
Reference in New Issue
Block a user