summaryrefslogtreecommitdiff
path: root/framework/DataAccess/TDatabaseProvider.php
diff options
context:
space:
mode:
Diffstat (limited to 'framework/DataAccess/TDatabaseProvider.php')
-rw-r--r--framework/DataAccess/TDatabaseProvider.php258
1 files changed, 258 insertions, 0 deletions
diff --git a/framework/DataAccess/TDatabaseProvider.php b/framework/DataAccess/TDatabaseProvider.php
new file mode 100644
index 00000000..8f676345
--- /dev/null
+++ b/framework/DataAccess/TDatabaseProvider.php
@@ -0,0 +1,258 @@
+<?php
+
+/**
+ * Database access module.
+ *
+ * @author Wei Zhuo <weizhuo[at]gmail[dot]com>
+ * @version $Revision: $ $Date: $
+ * @package System.DataAccess
+ * @since 3.0
+ */
+abstract class TDatabaseProvider extends TModule
+{
+ private $_connectionString = '';
+ private $_database='';
+ private $_driver='';
+ private $_host='';
+ private $_username='';
+ private $_password='';
+ private $_persistent=true;
+
+ /**
+ * @param string used to open the connection
+ */
+ public function setConnectionString($value)
+ {
+ $this->_connectionString = $value;
+ }
+
+ /**
+ * @return string used to open the connection
+ */
+ public function getConnectionString()
+ {
+ return $this->_connectionString;
+ }
+
+ /**
+ * @return string the DB driver (mysql, sqlite, etc.)
+ */
+ public function getDriver()
+ {
+ return $this->_driver;
+ }
+
+ /**
+ * Sets the DB driver (mysql, sqlite, etc.)
+ * @param string the DB driver
+ */
+ public function setDriver($value)
+ {
+ $this->_driver=$value;
+ }
+
+ /**
+ * @return string the DB host name/IP (and port number) in the format "host[:port]"
+ */
+ public function getHost()
+ {
+ return $this->_host;
+ }
+
+ /**
+ * Sets the DB host name/IP (and port number) in the format "host[:port]"
+ * @param string the DB host
+ */
+ public function setHost($value)
+ {
+ $this->_host=$value;
+ }
+
+ /**
+ * @return string the DB username
+ */
+ public function getUsername()
+ {
+ return $this->_username;
+ }
+
+ /**
+ * Sets the DB username
+ * @param string the DB username
+ */
+ public function setUsername($value)
+ {
+ $this->_username=$value;
+ }
+
+ /**
+ * @return string the DB password
+ */
+ public function getPassword()
+ {
+ return $this->_password;
+ }
+
+ /**
+ * Sets the DB password
+ * @param string the DB password
+ */
+ public function setPassword($value)
+ {
+ $this->_password=$value;
+ }
+
+ /**
+ * @return string the database name
+ */
+ public function getDatabase()
+ {
+ return $this->_database;
+ }
+
+ /**
+ * Sets the database name
+ * @param string the database name
+ */
+ public function setDatabase($value)
+ {
+ $this->_database=$value;
+ }
+
+ /**
+ * @return boolean whether the DB connection is persistent
+ */
+ public function getUsePersistentConnection()
+ {
+ return $this->_persistent;
+ }
+
+ /**
+ * Sets whether the DB connection should be persistent
+ * @param boolean whether the DB connection should be persistent
+ */
+ public function setUsePersistentConnection($value)
+ {
+ $this->_persistent=$value;
+ }
+
+ /**
+ * @return TDbConnection a database connection
+ */
+ public abstract function getConnection();
+}
+
+/**
+ * Performs the connection to the database using a TDatabaseProvider,
+ * executes SQL statements.
+ *
+ * @author Wei Zhuo <weizhuo[at]gmail[dot]com>
+ * @version $Revision: $ $Date: $
+ * @package System.DataAccess
+ * @since 3.0
+ */
+abstract class TDbConnection extends TComponent implements IDbConnection
+{
+ private $_provider;
+
+ public function __construct($provider)
+ {
+ if($provider instanceof TDatabaseProvider)
+ $this->setProvider($provider);
+ }
+
+ public function setProvider($provider)
+ {
+ $this->_provider = $provider;
+ }
+
+ public function getProvider()
+ {
+ return $this->_provider;
+ }
+}
+
+/**
+ * A connection (session) with a specific database. SQL statements are executed
+ * and results are returned within the context of a connection.
+ *
+ * @author Wei Zhuo <weizhuo[at]gmail[dot]com>
+ * @version $Revision: $ $Date: $
+ * @package System.DataAccess
+ * @since 3.0
+ */
+interface IDbConnection
+{
+ /**
+ * Closes the connection to the database.
+ */
+ public function close();
+
+ /**
+ * @return boolean retrieves whether this connection has been closed.
+ */
+ public function getIsClosed();
+
+ /**
+ * Opens a database connection with settings provided in the ConnectionString.
+ */
+ public function open();
+
+ /**
+ * @return string creates a prepared statement for sending parameterized
+ * SQL statements to the database.
+ */
+ public function prepare($statement);
+
+ /**
+ * Executes the SQL statement which may be any kind of SQL statement,
+ * including prepared statements.
+ * @param string sql query statement
+ * @param array subsititution parameters
+ * @return mixed result set
+ */
+ public function execute($sql, $parameters=array());
+
+ /**
+ * Start a transaction on this connection.
+ */
+ public function beginTransaction();
+
+ /**
+ * Finish and cleanup transactions.
+ */
+ public function completeTranaction();
+
+ /**
+ * Fail the current transaction.
+ */
+ public function failTransaction();
+
+ /**
+ * @return boolean true if transaction has failed.
+ */
+ public function getHasTransactionFailed();
+
+ /**
+ * Makes all changes made since the previous commit/rollback permanent and
+ * releases any database locks.
+ */
+ public function commit();
+
+ /**
+ * Undoes all changes made in the current transaction and releases any
+ * database locks
+ */
+ public function rollback();
+
+ /**
+ * @param string quote a string to be sent to the database.
+ * @param boolean if true it ensure that the variable is not quoted twice,
+ * once by quote and once by the magic_quotes_gpc.
+ * @return string database specified quoted string
+ */
+ public function quote($string, $magic_quotes=false);
+
+}
+
+?> \ No newline at end of file