summaryrefslogtreecommitdiff
path: root/vendor/doctrine/dbal/src/Driver/SQLSrv/Driver.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/doctrine/dbal/src/Driver/SQLSrv/Driver.php')
-rw-r--r--vendor/doctrine/dbal/src/Driver/SQLSrv/Driver.php73
1 files changed, 73 insertions, 0 deletions
diff --git a/vendor/doctrine/dbal/src/Driver/SQLSrv/Driver.php b/vendor/doctrine/dbal/src/Driver/SQLSrv/Driver.php
new file mode 100644
index 0000000..c9c2c34
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/SQLSrv/Driver.php
@@ -0,0 +1,73 @@
1<?php
2
3declare(strict_types=1);
4
5namespace Doctrine\DBAL\Driver\SQLSrv;
6
7use Doctrine\DBAL\Driver\AbstractSQLServerDriver;
8use Doctrine\DBAL\Driver\AbstractSQLServerDriver\Exception\PortWithoutHost;
9use Doctrine\DBAL\Driver\SQLSrv\Exception\Error;
10use SensitiveParameter;
11
12use function sqlsrv_configure;
13use function sqlsrv_connect;
14
15/**
16 * Driver for ext/sqlsrv.
17 */
18final class Driver extends AbstractSQLServerDriver
19{
20 /**
21 * {@inheritDoc}
22 */
23 public function connect(
24 #[SensitiveParameter]
25 array $params,
26 ): Connection {
27 $serverName = '';
28
29 if (isset($params['host'])) {
30 $serverName = $params['host'];
31
32 if (isset($params['port'])) {
33 $serverName .= ',' . $params['port'];
34 }
35 } elseif (isset($params['port'])) {
36 throw PortWithoutHost::new();
37 }
38
39 $driverOptions = $params['driverOptions'] ?? [];
40
41 if (isset($params['dbname'])) {
42 $driverOptions['Database'] = $params['dbname'];
43 }
44
45 if (isset($params['charset'])) {
46 $driverOptions['CharacterSet'] = $params['charset'];
47 }
48
49 if (isset($params['user'])) {
50 $driverOptions['UID'] = $params['user'];
51 }
52
53 if (isset($params['password'])) {
54 $driverOptions['PWD'] = $params['password'];
55 }
56
57 if (! isset($driverOptions['ReturnDatesAsStrings'])) {
58 $driverOptions['ReturnDatesAsStrings'] = 1;
59 }
60
61 if (! sqlsrv_configure('WarningsReturnAsErrors', 0)) {
62 throw Error::new();
63 }
64
65 $connection = sqlsrv_connect($serverName, $driverOptions);
66
67 if ($connection === false) {
68 throw Error::new();
69 }
70
71 return new Connection($connection);
72 }
73}