Вход Регистрация
Файл: 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 DriverVersionAwarePlatformDriver
{
    
/**
     * {@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($messageTheDriverException $exception)
    {
        return new 
DriverException($message$exception);
    }
}
Онлайн: 0
Реклама