Browse Source

namespace cleanup.

tags/2.0.0-beta
Qiang Xue 12 years ago
parent
commit
490c57f5e2
  1. 28
      yii/db/Connection.php

28
yii/db/Connection.php

@ -7,6 +7,8 @@
namespace yii\db; namespace yii\db;
use PDO;
use Yii;
use yii\base\Component; use yii\base\Component;
use yii\base\InvalidConfigException; use yii\base\InvalidConfigException;
use yii\base\NotSupportedException; use yii\base\NotSupportedException;
@ -128,7 +130,7 @@ class Connection extends Component
*/ */
public $attributes; public $attributes;
/** /**
* @var \PDO the PHP PDO instance associated with this DB connection. * @var PDO the PHP PDO instance associated with this DB connection.
* This property is mainly managed by [[open()]] and [[close()]] methods. * This property is mainly managed by [[open()]] and [[close()]] methods.
* When a DB connection is active, this property will represent a PDO instance; * When a DB connection is active, this property will represent a PDO instance;
* otherwise, it will be null. * otherwise, it will be null.
@ -229,7 +231,7 @@ class Connection extends Component
/** /**
* @var array mapping between PDO driver names and [[Schema]] classes. * @var array mapping between PDO driver names and [[Schema]] classes.
* The keys of the array are PDO driver names while the values the corresponding * The keys of the array are PDO driver names while the values the corresponding
* schema class name or configuration. Please refer to [[\Yii::createObject()]] for * schema class name or configuration. Please refer to [[Yii::createObject()]] for
* details on how to specify a configuration. * details on how to specify a configuration.
* *
* This property is mainly used by [[getSchema()]] when fetching the database schema information. * This property is mainly used by [[getSchema()]] when fetching the database schema information.
@ -313,12 +315,12 @@ class Connection extends Component
throw new InvalidConfigException('Connection::dsn cannot be empty.'); throw new InvalidConfigException('Connection::dsn cannot be empty.');
} }
try { try {
\Yii::trace('Opening DB connection: ' . $this->dsn, __METHOD__); Yii::trace('Opening DB connection: ' . $this->dsn, __METHOD__);
$this->pdo = $this->createPdoInstance(); $this->pdo = $this->createPdoInstance();
$this->initConnection(); $this->initConnection();
} }
catch (\PDOException $e) { catch (\PDOException $e) {
\Yii::error("Failed to open DB connection ({$this->dsn}): " . $e->getMessage(), __METHOD__); Yii::error("Failed to open DB connection ({$this->dsn}): " . $e->getMessage(), __METHOD__);
$message = YII_DEBUG ? 'Failed to open DB connection: ' . $e->getMessage() : 'Failed to open DB connection.'; $message = YII_DEBUG ? 'Failed to open DB connection: ' . $e->getMessage() : 'Failed to open DB connection.';
throw new Exception($message, $e->errorInfo, (int)$e->getCode()); throw new Exception($message, $e->errorInfo, (int)$e->getCode());
} }
@ -332,7 +334,7 @@ class Connection extends Component
public function close() public function close()
{ {
if ($this->pdo !== null) { if ($this->pdo !== null) {
\Yii::trace('Closing DB connection: ' . $this->dsn, __METHOD__); Yii::trace('Closing DB connection: ' . $this->dsn, __METHOD__);
$this->pdo = null; $this->pdo = null;
$this->_schema = null; $this->_schema = null;
$this->_transaction = null; $this->_transaction = null;
@ -344,11 +346,11 @@ class Connection extends Component
* This method is called by [[open]] to establish a DB connection. * This method is called by [[open]] to establish a DB connection.
* The default implementation will create a PHP PDO instance. * The default implementation will create a PHP PDO instance.
* You may override this method if the default PDO needs to be adapted for certain DBMS. * You may override this method if the default PDO needs to be adapted for certain DBMS.
* @return \PDO the pdo instance * @return PDO the pdo instance
*/ */
protected function createPdoInstance() protected function createPdoInstance()
{ {
$pdoClass = '\PDO'; $pdoClass = 'PDO';
if (($pos = strpos($this->dsn, ':')) !== false) { if (($pos = strpos($this->dsn, ':')) !== false) {
$driver = strtolower(substr($this->dsn, 0, $pos)); $driver = strtolower(substr($this->dsn, 0, $pos));
if ($driver === 'mssql' || $driver === 'dblib' || $driver === 'sqlsrv') { if ($driver === 'mssql' || $driver === 'dblib' || $driver === 'sqlsrv') {
@ -367,9 +369,9 @@ class Connection extends Component
*/ */
protected function initConnection() protected function initConnection()
{ {
$this->pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
if ($this->emulatePrepare !== null && constant('\PDO::ATTR_EMULATE_PREPARES')) { if ($this->emulatePrepare !== null && constant('PDO::ATTR_EMULATE_PREPARES')) {
$this->pdo->setAttribute(\PDO::ATTR_EMULATE_PREPARES, $this->emulatePrepare); $this->pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, $this->emulatePrepare);
} }
if ($this->charset !== null && in_array($this->getDriverName(), array('pgsql', 'mysql', 'mysqli'))) { if ($this->charset !== null && in_array($this->getDriverName(), array('pgsql', 'mysql', 'mysqli'))) {
$this->pdo->exec('SET NAMES ' . $this->pdo->quote($this->charset)); $this->pdo->exec('SET NAMES ' . $this->pdo->quote($this->charset));
@ -428,7 +430,7 @@ class Connection extends Component
} else { } else {
$driver = $this->getDriverName(); $driver = $this->getDriverName();
if (isset($this->schemaMap[$driver])) { if (isset($this->schemaMap[$driver])) {
$this->_schema = \Yii::createObject($this->schemaMap[$driver]); $this->_schema = Yii::createObject($this->schemaMap[$driver]);
$this->_schema->db = $this; $this->_schema->db = $this;
return $this->_schema; return $this->_schema;
} else { } else {
@ -536,7 +538,7 @@ class Connection extends Component
if (($pos = strpos($this->dsn, ':')) !== false) { if (($pos = strpos($this->dsn, ':')) !== false) {
return strtolower(substr($this->dsn, 0, $pos)); return strtolower(substr($this->dsn, 0, $pos));
} else { } else {
return strtolower($this->pdo->getAttribute(\PDO::ATTR_DRIVER_NAME)); return strtolower($this->pdo->getAttribute(PDO::ATTR_DRIVER_NAME));
} }
} }
@ -551,7 +553,7 @@ class Connection extends Component
*/ */
public function getQuerySummary() public function getQuerySummary()
{ {
$logger = \Yii::getLogger(); $logger = Yii::getLogger();
$timings = $logger->getProfiling(array('yii\db\Command::query', 'yii\db\Command::execute')); $timings = $logger->getProfiling(array('yii\db\Command::query', 'yii\db\Command::execute'));
$count = count($timings); $count = count($timings);
$time = 0; $time = 0;

Loading…
Cancel
Save