From 0a2b07350a2c449e6f700a5a287d5092d270da06 Mon Sep 17 00:00:00 2001 From: zYne Date: Sun, 24 Jun 2007 21:47:06 +0000 Subject: [PATCH] deprecated Doctrine_Db --- lib/Doctrine/Connection/Statement.php | 6 +- lib/Doctrine/Db.php | 591 +------------------------- 2 files changed, 6 insertions(+), 591 deletions(-) diff --git a/lib/Doctrine/Connection/Statement.php b/lib/Doctrine/Connection/Statement.php index b8fa1d439..f9e828255 100644 --- a/lib/Doctrine/Connection/Statement.php +++ b/lib/Doctrine/Connection/Statement.php @@ -51,7 +51,7 @@ class Doctrine_Connection_Statement implements Doctrine_Adapter_Statement_Interf public function __construct(Doctrine_Connection $conn, $stmt) { $this->_conn = $conn; - $this->_stmt = $stmt; + $this->_stmt = $stmt; if ($stmt === false) { throw new Doctrine_Db_Exception('Unknown statement object given.'); @@ -73,7 +73,7 @@ class Doctrine_Connection_Statement implements Doctrine_Adapter_Statement_Interf } public function getQuery() { - return $this->_stmt->getQuery(); + return $this->_stmt->queryString; } /** * bindColumn @@ -213,7 +213,7 @@ class Doctrine_Connection_Statement implements Doctrine_Adapter_Statement_Interf */ public function execute($params = null) { - $event = new Doctrine_Event($this, Doctrine_Event::EXECUTE, $this->_stmt->getQuery(), $params); + $event = new Doctrine_Event($this, Doctrine_Event::EXECUTE, $this->_stmt->queryString, $params); // print $this->_stmt->queryString . print_r($params, true) . "
"; $skip = $this->_conn->getListener()->onPreExecute($event); diff --git a/lib/Doctrine/Db.php b/lib/Doctrine/Db.php index ae2bc5e92..8da60d32f 100644 --- a/lib/Doctrine/Db.php +++ b/lib/Doctrine/Db.php @@ -21,11 +21,6 @@ /** * Doctrine_Db * - * - * Doctrine_Db provides the following things to underlying database hanlder - * - - * * @author Konsta Vesterinen * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @package Doctrine @@ -34,590 +29,10 @@ * @since 1.0 * @version $Revision$ */ -class Doctrine_Db implements Countable, IteratorAggregate, Doctrine_Adapter_Interface +class Doctrine_Db { - /** - * @var array $instances all the instances of this class - */ - protected static $instances = array(); - /** - * @var array $isConnected whether or not a connection has been established - */ - protected $isConnected = false; - /** - * @var PDO $dbh the database handler - */ - protected $dbh; - /** - * @var array $options - */ - protected $options = array('dsn' => null, - 'username' => null, - 'password' => null, - ); - /** - * @var array $pendingAttributes An array of pending attributes. When setting attributes - * no connection is needed. When connected all the pending - * attributes are passed to the underlying PDO instance. - */ - protected $pendingAttributes = array(); - /** - * @var Doctrine_Db_EventListener_Interface|Doctrine_Overloadable $listener - * listener for listening events - */ - protected $listener; - /** - * @var string $name name of this connection - * @see Doctrine_Manager::openConnection() - */ - protected $name; - - protected $count = 0; - - - private static $driverMap = array('oracle' => 'oci8', - 'postgres' => 'pgsql', - 'oci' => 'oci8', - 'sqlite2' => 'sqlite', - 'sqlite3' => 'sqlite'); - - /** - * constructor - * - * @param string $dsn data source name - * @param string $user database username - * @param string $pass database password - */ - public function __construct($dsn, $user = null, $pass = null) + public function __construct() { - // check if dsn is PEAR-like or not - if ( ! isset($user) || strpos($dsn, '://')) { - $a = self::parseDSN($dsn); - - extract($a); - } else { - $e = explode(':', $dsn); - - if($e[0] == 'uri') { - $e[0] = 'odbc'; - } - - $this->pendingAttributes[Doctrine::ATTR_DRIVER_NAME] = $e[0]; - - } - $this->options['dsn'] = $dsn; - $this->options['username'] = $user; - $this->options['password'] = $pass; - $this->listener = new Doctrine_Db_EventListener(); - } - - public function incrementQueryCount() - { - $this->count++; - } - /** - * getDbh - */ - public function getDbh() - { - return $this->dbh; - } - /** - * getAdapter - * - * @return Doctrine_Adapter_Interface|PDO $adapter - */ - public function getAdapter() - { - return $this->dbh; - } - /** - * setAdapter - * - * @param Doctrine_Adapter_Interface|PDO $adapter - * @return void - */ - public function setAdapter($adapter) - { - $this->dbh = $adapter; - } - /** - * setName - * this method should only be used by doctrine internally and - * also for testing purposes - * - * @param string $name connection name - * @return void - */ - public function setName($name) - { - $this->name = $name; - } - /** - * getName - * - * @return string the name of the associated connection - */ - public function getName() - { - return $this->name; - } - public function getOption($name) - { - if ( ! array_key_exists($name, $this->options)) { - throw new Doctrine_Db_Exception('Unknown option ' . $name); - } - return $this->options[$name]; - } - /** - * addListener - * - * @param Doctrine_Db_EventListener_Interface|Doctrine_Overloadable $listener - * @return Doctrine_Db - */ - public function addListener($listener, $name = null) - { - if ( ! ($this->listener instanceof Doctrine_Db_EventListener_Chain)) { - $this->listener = new Doctrine_Db_EventListener_Chain(); - } - $this->listener->add($listener, $name); - - return $this; - } - /** - * getListener - * - * @return Doctrine_Db_EventListener_Interface|Doctrine_Overloadable - */ - public function getListener() - { - return $this->listener; - } - /** - * setListener - * - * @param Doctrine_Db_EventListener_Interface|Doctrine_Overloadable $listener - * @return Doctrine_Db - */ - public function setListener($listener) - { - if ( ! ($listener instanceof Doctrine_Db_EventListener_Interface) - && ! ($listener instanceof Doctrine_Overloadable) - ) { - throw new Doctrine_Db_Exception("Couldn't set eventlistener for database handler. EventListeners should implement either Doctrine_Db_EventListener_Interface or Doctrine_Overloadable"); - } - $this->listener = $listener; - - return $this; - } - - /** - * connect - * connects into database - * - * @return boolean - */ - public function connect() - { - if ($this->isConnected) - return false; - - $event = new Doctrine_Db_Event($this, Doctrine_Db_Event::CONNECT); - - $this->listener->onPreConnect($event); - - $e = explode(':', $this->options['dsn']); - $found = false; - - if (extension_loaded('pdo')) { - if (in_array($e[0], PDO::getAvailableDrivers())) { - $this->dbh = new PDO($this->options['dsn'], $this->options['username'], $this->options['password']); - $this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); - //$this->dbh->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('Doctrine_Db_Statement', array($this))); - $found = true; - } - } - - if ( ! $found) { - $class = 'Doctrine_Adapter_' . ucwords($e[0]); - - if (class_exists($class)) { - $this->dbh = new $class($this->options['dsn'], $this->options['username'], $this->options['password']); - } else { - throw new Doctrine_Db_Exception("Couldn't locate driver named " . $e[0]); - } - } - - - foreach($this->pendingAttributes as $attr => $value) { - // some drivers don't support setting this so we just skip it - if($attr == Doctrine::ATTR_DRIVER_NAME) { - continue; - } - $this->dbh->setAttribute($attr, $value); - } - - $this->isConnected = true; - - $this->listener->onConnect($event); - return true; - } - - /** - * getConnection - * - * @param string $dsn PEAR::DB like DSN or PDO like DSN - * format for PEAR::DB like DSN: schema://user:password@address/dbname - * - * @return - */ - public static function getConnection($dsn = null, $username = null, $password = null) - { - return new self($dsn, $username, $password); - } - /** - * driverName - * converts a driver name like (oracle) to appropriate PDO - * driver name (oci8 in the case of oracle) - * - * @param string $name - * @return string - */ - public static function driverName($name) - { - if (isset(self::$driverMap[$name])) { - return self::$driverMap[$name]; - } - return $name; - } - /** - * parseDSN - * - * @param string $dsn - * @return array Parsed contents of DSN - */ - public function parseDSN($dsn) - { - // silence any warnings - $parts = @parse_url($dsn); - - $names = array('scheme', 'host', 'port', 'user', 'pass', 'path', 'query', 'fragment'); - - foreach ($names as $name) { - if ( ! isset($parts[$name])) { - $parts[$name] = null; - } - } - - if (count($parts) == 0 || ! isset($parts['scheme'])) { - throw new Doctrine_Db_Exception('Empty data source name'); - } - $drivers = self::getAvailableDrivers(); - - $parts['scheme'] = self::driverName($parts['scheme']); - /** - if ( ! in_array($parts['scheme'], $drivers)) { - throw new Doctrine_Db_Exception('Driver '.$parts['scheme'].' not availible or extension not loaded'); - } - */ - switch ($parts['scheme']) { - case 'sqlite': - if (isset($parts['host']) && $parts['host'] == ':memory') { - $parts['database'] = ':memory:'; - $parts['dsn'] = 'sqlite::memory:'; - } - - break; - case 'mysql': - case 'informix': - case 'oci8': - case 'mssql': - case 'firebird': - case 'dblib': - case 'pgsql': - case 'odbc': - case 'mock': - case 'oracle': - if ( ! isset($parts['path']) || $parts['path'] == '/') { - throw new Doctrine_Db_Exception('No database availible in data source name'); - } - if (isset($parts['path'])) { - $parts['database'] = substr($parts['path'], 1); - } - if ( ! isset($parts['host'])) { - throw new Doctrine_Db_Exception('No hostname set in data source name'); - } - - if (isset(self::$driverMap[$parts['scheme']])) { - $parts['scheme'] = self::$driverMap[$parts['scheme']]; - } - - $parts['dsn'] = $parts['scheme'] . ':host=' - . $parts['host'] . ';dbname=' - . $parts['database']; - - if (isset($parts['port'])) { - // append port to dsn if supplied - $parts['dsn'] .= ';port=' . $parts['port']; - } - break; - default: - throw new Doctrine_Db_Exception('Unknown driver '.$parts['scheme']); - } - $this->pendingAttributes[PDO::ATTR_DRIVER_NAME] = $parts['scheme']; - - return $parts; - } - /** - * clear - * clears all instances from the memory - * - * @return void - */ - public static function clear() - { - self::$instances = array(); - } - - /** - * errorCode - * Fetch the SQLSTATE associated with the last operation on the database handle - * - * @return integer - */ - public function errorCode() - { - return $this->dbh->errorCode(); - } - /** - * errorInfo - * Fetch extended error information associated with the last operation on the database handle - * - * @return array - */ - public function errorInfo() - { - return $this->dbh->errorInfo(); - } - /** - * prepare - * - * @param string $statement - */ - public function prepare($statement) - { - $this->connect(); - - $event = new Doctrine_Db_Event($this, Doctrine_Db_Event::PREPARE, $statement); - - $this->listener->onPrePrepare($event); - - $stmt = $this->dbh->prepare($statement); - - $this->listener->onPrepare($event); - - return new Doctrine_Db_Statement($this, $stmt); - } - /** - * query - * - * @param string $statement - * @param array $params - * @return Doctrine_Db_Statement|boolean - */ - public function query($statement, array $params = array()) { - $this->connect(); - - $event = new Doctrine_Db_Event($this, Doctrine_Db_Event::QUERY, $statement); - - $skip = $this->listener->onPreQuery($event); - - if ( ! empty($params)) { - $stmt = $this->dbh->prepare($statement); - - return $stmt->execute($params); - - } else { - if ( ! $skip) { - $stmt = $this->dbh->query($statement); - $this->count++; - } else { - $stmt = new stdClass; - $stmt->queryString = $statement; - } - $stmt = new Doctrine_Db_Statement($this, $stmt); - } - - $this->listener->onQuery($event); - - return $stmt; - } - /** - * quote - * quotes a string for use in a query - * - * @param string $input - * @return string - */ - public function quote($input) - { - $this->connect(); - - return $this->dbh->quote($input); - } - /** - * exec - * executes an SQL statement and returns the number of affected rows - * - * @param string $statement - * @return integer - */ - public function exec($statement) - { - $this->connect(); - - $args = func_get_args(); - - $event = new Doctrine_Db_Event($this, Doctrine_Db_Event::EXEC, $statement); - - $this->listener->onPreExec($event); - - $rows = $this->dbh->exec($statement); - - $this->count++; - - $this->listener->onExec($event); - - return $rows; - } - - /** - * lastInsertId - * - * @return integer - */ - public function lastInsertId() - { - $this->connect(); - - return $this->dbh->lastInsertId(); - } - /** - * begins a transaction - * - * @return boolean - */ - public function beginTransaction() - { - $this->connect(); - - $event = new Doctrine_Db_Event($this, Doctrine_Db_Event::BEGIN); - - $this->listener->onPreBeginTransaction($event); - - $return = $this->dbh->beginTransaction(); - - $this->listener->onBeginTransaction($event); - - return $return; - } - /** - * commits a transaction - * - * @return boolean - */ - public function commit() - { - $this->connect(); - - $event = new Doctrine_Db_Event($this, Doctrine_Db_Event::COMMIT); - - $this->listener->onPreCommit($event); - - $return = $this->dbh->commit(); - - $this->listener->onCommit($event); - - return $return; - } - /** - * rollBack - * - * @return boolean - */ - public function rollBack() - { - $this->connect(); - - $event = new Doctrine_Db_Event($this, Doctrine_Db_Event::ROLLBACK); - - $this->listener->onPreRollback($event); - - $this->dbh->rollBack(); - - $this->listener->onRollback($event); - } - /** - * getAttribute - * retrieves a database connection attribute - * - * @param integer $attribute - * @return mixed - */ - public function getAttribute($attribute) - { - if ($this->isConnected) { - return $this->dbh->getAttribute($attribute); - } else { - if ( ! isset($this->pendingAttributes[$attribute])) { - throw new Doctrine_Db_Exception('Attribute ' . $attribute . ' not found.'); - } - - return $this->pendingAttributes[$attribute]; - } - } - /** - * returns an array of available PDO drivers - */ - public static function getAvailableDrivers() - { - return PDO::getAvailableDrivers(); - } - /** - * setAttribute - * sets an attribute - * - * @param integer $attribute - * @param mixed $value - * @return boolean - */ - public function setAttribute($attribute, $value) - { - if ($this->isConnected) { - $this->dbh->setAttribute($attribute, $value); - } else { - $this->pendingAttributes[$attribute] = $value; - } - } - /** - * getIterator - * - * @return ArrayIterator - */ - public function getIterator() - { - if ($this->listener instanceof Doctrine_Db_Profiler) { - return $this->listener; - } - } - /** - * count - * returns the number of executed queries - * - * @return integer - */ - public function count() - { - return $this->count; + throw new Exception('Doctrine_Db has been deprecated. The functionality has been merged into Doctrine_Connection.'); } }