Subversion-Projekte lars-tiefland.laravel_shop

Revision

Zur aktuellen Revision | Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php
2
 
3
namespace Doctrine\DBAL\Driver\SQLSrv;
4
 
5
use Doctrine\DBAL\Driver\AbstractSQLServerDriver;
6
use Doctrine\DBAL\Driver\AbstractSQLServerDriver\Exception\PortWithoutHost;
7
use Doctrine\DBAL\Driver\SQLSrv\Exception\Error;
8
 
9
use function sqlsrv_configure;
10
use function sqlsrv_connect;
11
 
12
/**
13
 * Driver for ext/sqlsrv.
14
 */
15
final class Driver extends AbstractSQLServerDriver
16
{
17
    /**
18
     * {@inheritdoc}
19
     *
20
     * @return Connection
21
     */
22
    public function connect(array $params)
23
    {
24
        $serverName = '';
25
 
26
        if (isset($params['host'])) {
27
            $serverName = $params['host'];
28
 
29
            if (isset($params['port'])) {
30
                $serverName .= ',' . $params['port'];
31
            }
32
        } elseif (isset($params['port'])) {
33
            throw PortWithoutHost::new();
34
        }
35
 
36
        $driverOptions = $params['driverOptions'] ?? [];
37
 
38
        if (isset($params['dbname'])) {
39
            $driverOptions['Database'] = $params['dbname'];
40
        }
41
 
42
        if (isset($params['charset'])) {
43
            $driverOptions['CharacterSet'] = $params['charset'];
44
        }
45
 
46
        if (isset($params['user'])) {
47
            $driverOptions['UID'] = $params['user'];
48
        }
49
 
50
        if (isset($params['password'])) {
51
            $driverOptions['PWD'] = $params['password'];
52
        }
53
 
54
        if (! isset($driverOptions['ReturnDatesAsStrings'])) {
55
            $driverOptions['ReturnDatesAsStrings'] = 1;
56
        }
57
 
58
        if (! sqlsrv_configure('WarningsReturnAsErrors', 0)) {
59
            throw Error::new();
60
        }
61
 
62
        $connection = sqlsrv_connect($serverName, $driverOptions);
63
 
64
        if ($connection === false) {
65
            throw Error::new();
66
        }
67
 
68
        return new Connection($connection);
69
    }
70
}