Файл: vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractSQLServerDriver.php
Строк: 137
<?php
namespace DoctrineDBALDriver;
use DoctrineDBALConnection;
use DoctrineDBALDriver;
use DoctrineDBALDriverDriverException as TheDriverException;
use DoctrineDBALException;
use DoctrineDBALExceptionDriverException;
use DoctrineDBALPlatformsSQLServer2005Platform;
use DoctrineDBALPlatformsSQLServer2008Platform;
use DoctrineDBALPlatformsSQLServer2012Platform;
use DoctrineDBALPlatformsSQLServerPlatform;
use DoctrineDBALSchemaSQLServerSchemaManager;
use DoctrineDBALVersionAwarePlatformDriver;
use function assert;
use function preg_match;
use function version_compare;
/**
* Abstract base implementation of the {@link Driver} interface for Microsoft SQL Server based drivers.
*/
abstract class AbstractSQLServerDriver implements Driver, VersionAwarePlatformDriver
{
/**
* {@inheritdoc}
*/
public function createDatabasePlatformForVersion($version)
{
if (
! preg_match(
'/^(?P<major>d+)(?:.(?P<minor>d+)(?:.(?P<patch>d+)(?:.(?P<build>d+))?)?)?/',
$version,
$versionParts
)
) {
throw Exception::invalidPlatformVersionSpecified(
$version,
'<major_version>.<minor_version>.<patch_version>.<build_version>'
);
}
$majorVersion = $versionParts['major'];
$minorVersion = $versionParts['minor'] ?? 0;
$patchVersion = $versionParts['patch'] ?? 0;
$buildVersion = $versionParts['build'] ?? 0;
$version = $majorVersion . '.' . $minorVersion . '.' . $patchVersion . '.' . $buildVersion;
switch (true) {
case version_compare($version, '11.00.2100', '>='):
return new SQLServer2012Platform();
case version_compare($version, '10.00.1600', '>='):
return new SQLServer2008Platform();
case version_compare($version, '9.00.1399', '>='):
return new SQLServer2005Platform();
default:
return new SQLServerPlatform();
}
}
/**
* {@inheritdoc}
*
* @deprecated Use Connection::getDatabase() instead.
*/
public function getDatabase(Connection $conn)
{
$params = $conn->getParams();
if (isset($params['dbname'])) {
return $params['dbname'];
}
$database = $conn->query('SELECT DB_NAME()')->fetchColumn();
assert($database !== false);
return $database;
}
/**
* {@inheritdoc}
*/
public function getDatabasePlatform()
{
return new SQLServer2008Platform();
}
/**
* {@inheritdoc}
*/
public function getSchemaManager(Connection $conn)
{
return new SQLServerSchemaManager($conn);
}
/**
* @param string $message
*
* @return DriverException
*/
public function convertException($message, TheDriverException $exception)
{
return new DriverException($message, $exception);
}
}