MIOLO20
Carregando...
Procurando...
Nenhuma entrada encontrada
DriverManager.php
Ir para a documentação deste ficheiro.
1<?php
2/*
3 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
4 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
5 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
6 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
7 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
8 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
9 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
10 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
11 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
12 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
13 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
14 *
15 * This software consists of voluntary contributions made by many individuals
16 * and is licensed under the LGPL. For more information, see
17 * <http://www.doctrine-project.org>.
18 */
19
20namespace Doctrine\DBAL;
21
23
30final class DriverManager
31{
38 private static $_driverMap = array(
39 'pdo_mysql' => 'Doctrine\DBAL\Driver\PDOMySql\Driver',
40 'pdo_sqlite' => 'Doctrine\DBAL\Driver\PDOSqlite\Driver',
41 'pdo_pgsql' => 'Doctrine\DBAL\Driver\PDOPgSql\Driver',
42 'pdo_oci' => 'Doctrine\DBAL\Driver\PDOOracle\Driver',
43 'oci8' => 'Doctrine\DBAL\Driver\OCI8\Driver',
44 'ibm_db2' => 'Doctrine\DBAL\Driver\IBMDB2\DB2Driver',
45 'pdo_ibm' => 'Doctrine\DBAL\Driver\PDOIbm\Driver',
46 'pdo_sqlsrv' => 'Doctrine\DBAL\Driver\PDOSqlsrv\Driver',
47 );
48
50 private function __construct() { }
51
94 public static function getConnection(
95 array $params,
96 Configuration $config = null,
97 EventManager $eventManager = null)
98 {
99 // create default config and event manager, if not set
100 if ( ! $config) {
101 $config = new Configuration();
102 }
103 if ( ! $eventManager) {
104 $eventManager = new EventManager();
105 }
106
107 // check for existing pdo object
108 if (isset($params['pdo']) && ! $params['pdo'] instanceof \PDO) {
110 } else if (isset($params['pdo'])) {
111 $params['pdo']->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
112 $params['driver'] = 'pdo_' . $params['pdo']->getAttribute(\PDO::ATTR_DRIVER_NAME);
113 } else {
114 self::_checkParams($params);
115 }
116 if (isset($params['driverClass'])) {
117 $className = $params['driverClass'];
118 } else {
119 $className = self::$_driverMap[$params['driver']];
120 }
121
122 $driver = new $className();
123
124 $wrapperClass = 'Doctrine\DBAL\Connection';
125 if (isset($params['wrapperClass'])) {
126 if (is_subclass_of($params['wrapperClass'], $wrapperClass)) {
127 $wrapperClass = $params['wrapperClass'];
128 } else {
129 throw DBALException::invalidWrapperClass($params['wrapperClass']);
130 }
131 }
132
133 return new $wrapperClass($params, $driver, $config, $eventManager);
134 }
135
141 private static function _checkParams(array $params)
142 {
143 // check existance of mandatory parameters
144
145 // driver
146 if ( ! isset($params['driver']) && ! isset($params['driverClass'])) {
148 }
149
150 // check validity of parameters
151
152 // driver
153 if ( isset($params['driver']) && ! isset(self::$_driverMap[$params['driver']])) {
154 throw DBALException::unknownDriver($params['driver'], array_keys(self::$_driverMap));
155 }
156
157 if (isset($params['driverClass']) && ! in_array('Doctrine\DBAL\Driver', class_implements($params['driverClass'], true))) {
158 throw DBALException::invalidDriverClass($params['driverClass']);
159 }
160 }
161}
static unknownDriver($unknownDriverName, array $knownDrivers)
static invalidDriverClass($driverClass)
static invalidWrapperClass($wrapperClass)
static getConnection(array $params, Configuration $config=null, EventManager $eventManager=null)