[limb-svn] r7015 - in 3.x/trunk/limb/dbal: src/drivers src/drivers/linter src/drivers/mysql src/drivers/mysqli src/drivers/oci src/drivers/pgsql src/drivers/sqlite src/toolkit tests/cases/non-driver
svn at limb-project.com
svn at limb-project.com
Tue May 13 16:02:24 MSD 2008
Author: serega
Date: 2008-05-13 16:02:24 +0400 (Tue, 13 May 2008)
New Revision: 7015
URL: http://fisheye.limb-project.com/changelog/limb/?cs=7015
Added:
3.x/trunk/limb/dbal/src/drivers/lmbDbBaseConnection.class.php
Modified:
3.x/trunk/limb/dbal/src/drivers/linter/lmbLinterConnection.class.php
3.x/trunk/limb/dbal/src/drivers/lmbDbConnection.interface.php
3.x/trunk/limb/dbal/src/drivers/mysql/lmbMysqlConnection.class.php
3.x/trunk/limb/dbal/src/drivers/mysqli/lmbMysqliConnection.class.php
3.x/trunk/limb/dbal/src/drivers/oci/lmbOciConnection.class.php
3.x/trunk/limb/dbal/src/drivers/pgsql/lmbPgsqlConnection.class.php
3.x/trunk/limb/dbal/src/drivers/sqlite/lmbSqliteConnection.class.php
3.x/trunk/limb/dbal/src/drivers/sqlite/lmbSqliteRecord.class.php
3.x/trunk/limb/dbal/src/drivers/sqlite/lmbSqliteStatement.class.php
3.x/trunk/limb/dbal/src/drivers/sqlite/lmbSqliteTypeInfo.class.php
3.x/trunk/limb/dbal/src/toolkit/lmbDbTools.class.php
3.x/trunk/limb/dbal/tests/cases/non-driver/lmbDBALTest.class.php
Log:
-- added abstract lmbDbBaseConnection class with :: getDsnString() method.
-- fixed all db connections, now they all extend new lmbDbBaseConnection class
-- minor fixes in lmbDbTools (added proper casting of $dsn parameter into lmbDbDSN object).
-- fixed lmbSqlite driver. Not sure if all works properly, simply copied necessary functionality from Mysql driver that allowed to pass the tests)
Modified: 3.x/trunk/limb/dbal/src/drivers/linter/lmbLinterConnection.class.php
===================================================================
--- 3.x/trunk/limb/dbal/src/drivers/linter/lmbLinterConnection.class.php 2008-05-13 11:11:06 UTC (rev 7014)
+++ 3.x/trunk/limb/dbal/src/drivers/linter/lmbLinterConnection.class.php 2008-05-13 12:02:24 UTC (rev 7015)
@@ -6,7 +6,7 @@
* @copyright Copyright © 2004-2007 BIT(http://bit-creative.com)
* @license LGPL http://www.gnu.org/copyleft/lesser.html
*/
-lmb_require('limb/dbal/src/drivers/lmbDbConnection.interface.php');
+lmb_require('limb/dbal/src/drivers/lmbDbBaseConnection.class.php');
lmb_require(dirname(__FILE__) . '/lmbLinterQueryStatement.class.php');
lmb_require(dirname(__FILE__) . '/lmbLinterDropStatement.class.php');
lmb_require(dirname(__FILE__) . '/lmbLinterInsertStatement.class.php');
@@ -21,25 +21,18 @@
* @package dbal
* @version $Id: $
*/
-class lmbLinterConnection implements lmbDbConnection
+class lmbLinterConnection extends lmbDbBaseConnection
{
const CURSOR_POOL_LIMIT = 64;
const LINTER_EMPTY_DATASET = -18;
protected $connectionId;
- protected $config;
protected $transactionCount = 0;
protected $cursorPool = array();
protected $mode = null;
protected $useConnection = false;
protected $debug = false;
-
- function __construct($config)
- {
- $this->config = $config;
- }
-
function getType()
{
return 'linter';
@@ -53,11 +46,6 @@
return $this->connectionId;
}
- function getHash()
- {
- return crc32(serialize($this->config));
- }
-
function getConfigValue($param = null)
{
if (is_null($param))
@@ -101,12 +89,7 @@
linter_set_cursor_opt($this->connectionId, CO_DT_FORMAT, "YYYY-MM-DD HH:MI:SS");
//linter_set_cursor_opt($this->connectionId, CO_DECIMAL_AS_DOUBLE, 1);
}
-
-
-
}
-
-
function __wakeup()
{
Added: 3.x/trunk/limb/dbal/src/drivers/lmbDbBaseConnection.class.php
===================================================================
--- 3.x/trunk/limb/dbal/src/drivers/lmbDbBaseConnection.class.php (rev 0)
+++ 3.x/trunk/limb/dbal/src/drivers/lmbDbBaseConnection.class.php 2008-05-13 12:02:24 UTC (rev 7015)
@@ -0,0 +1,49 @@
+<?php
+/*
+ * Limb PHP Framework
+ *
+ * @link http://limb-project.com
+ * @copyright Copyright © 2004-2007 BIT(http://bit-creative.com)
+ * @license LGPL http://www.gnu.org/copyleft/lesser.html
+ */
+
+lmb_require('limb/dbal/src/drivers/lmbDbConnection.interface.php');
+
+/**
+ * class lmbBaseDbConnection.
+ * A base class for all connection classes
+ *
+ * @package dbal
+ * @version $Id$
+ */
+abstract class lmbDbBaseConnection implements lmbDbConnection
+{
+ protected $config;
+ protected $dsn_string;
+
+ function __construct($config, $dsn_string = null)
+ {
+ $this->config = $config;
+ if(is_object($config) && ($config instanceof lmbDbDSN))
+ $this->dsn_string = $config->toString();
+ else
+ $this->dsn_string = $dsn_string;
+ }
+
+ function getConfig()
+ {
+ return $this->config;
+ }
+
+ function getHash()
+ {
+ return crc32(serialize($this->config));
+ }
+
+ function getDsnString()
+ {
+ return $this->dsn_string;
+ }
+}
+
+
Modified: 3.x/trunk/limb/dbal/src/drivers/lmbDbConnection.interface.php
===================================================================
--- 3.x/trunk/limb/dbal/src/drivers/lmbDbConnection.interface.php 2008-05-13 11:11:06 UTC (rev 7014)
+++ 3.x/trunk/limb/dbal/src/drivers/lmbDbConnection.interface.php 2008-05-13 12:02:24 UTC (rev 7015)
@@ -18,6 +18,7 @@
function getType();
function getConnectionId();
function getHash();
+ function getDsnString();
function connect();
function disconnect();
function beginTransaction();
Modified: 3.x/trunk/limb/dbal/src/drivers/mysql/lmbMysqlConnection.class.php
===================================================================
--- 3.x/trunk/limb/dbal/src/drivers/mysql/lmbMysqlConnection.class.php 2008-05-13 11:11:06 UTC (rev 7014)
+++ 3.x/trunk/limb/dbal/src/drivers/mysql/lmbMysqlConnection.class.php 2008-05-13 12:02:24 UTC (rev 7015)
@@ -7,7 +7,7 @@
* @license LGPL http://www.gnu.org/copyleft/lesser.html
*/
-lmb_require('limb/dbal/src/drivers/lmbDbConnection.interface.php');
+lmb_require('limb/dbal/src/drivers/lmbDbBaseConnection.class.php');
lmb_require(dirname(__FILE__) . '/lmbMysqlDbInfo.class.php');
lmb_require(dirname(__FILE__) . '/lmbMysqlQueryStatement.class.php');
lmb_require(dirname(__FILE__) . '/lmbMysqlInsertStatement.class.php');
@@ -21,17 +21,10 @@
* @package dbal
* @version $Id$
*/
-class lmbMysqlConnection implements lmbDbConnection
+class lmbMysqlConnection extends lmbDbBaseConnection
{
-
protected $connectionId;
- protected $config;
- function __construct($config)
- {
- $this->config = $config;
- }
-
function getType()
{
return 'mysql';
@@ -46,11 +39,6 @@
return $this->connectionId;
}
- function getHash()
- {
- return crc32(serialize($this->config));
- }
-
function connect()
{
$this->connectionId = mysql_connect($this->config['host'],
Modified: 3.x/trunk/limb/dbal/src/drivers/mysqli/lmbMysqliConnection.class.php
===================================================================
--- 3.x/trunk/limb/dbal/src/drivers/mysqli/lmbMysqliConnection.class.php 2008-05-13 11:11:06 UTC (rev 7014)
+++ 3.x/trunk/limb/dbal/src/drivers/mysqli/lmbMysqliConnection.class.php 2008-05-13 12:02:24 UTC (rev 7015)
@@ -7,7 +7,7 @@
* @license LGPL http://www.gnu.org/copyleft/lesser.html
*/
-lmb_require('limb/dbal/src/drivers/lmbDbConnection.interface.php');
+lmb_require('limb/dbal/src/drivers/lmbDbBaseConnection.class.php');
lmb_require(dirname(__FILE__) . '/lmbMysqliDbInfo.class.php');
lmb_require(dirname(__FILE__) . '/lmbMysqliQueryStatement.class.php');
lmb_require(dirname(__FILE__) . '/lmbMysqliInsertStatement.class.php');
@@ -22,17 +22,10 @@
* @package dbal
* @version $Id: lmbMysqlConnection.class.php 6848 2008-03-21 13:44:08Z svk $
*/
-class lmbMysqliConnection implements lmbDbConnection
+class lmbMysqliConnection extends lmbDbBaseConnection
{
-
protected $connectionId;
- protected $config;
- function __construct($config)
- {
- $this->config = $config;
- }
-
function getType()
{
return 'mysqli';
@@ -47,11 +40,6 @@
return $this->connectionId;
}
- function getHash()
- {
- return crc32(serialize($this->config));
- }
-
function connect()
{
$this->connectionId = mysqli_connect($this->config['host'],
Modified: 3.x/trunk/limb/dbal/src/drivers/oci/lmbOciConnection.class.php
===================================================================
--- 3.x/trunk/limb/dbal/src/drivers/oci/lmbOciConnection.class.php 2008-05-13 11:11:06 UTC (rev 7014)
+++ 3.x/trunk/limb/dbal/src/drivers/oci/lmbOciConnection.class.php 2008-05-13 12:02:24 UTC (rev 7015)
@@ -7,7 +7,7 @@
* @license LGPL http://www.gnu.org/copyleft/lesser.html
*/
lmb_require('limb/dbal/src/exception/lmbDbException.class.php');
-lmb_require('limb/dbal/src/drivers/lmbDbConnection.interface.php');
+lmb_require('limb/dbal/src/drivers/lmbDbBaseConnection.class.php');
lmb_require(dirname(__FILE__) . '/lmbOciDbInfo.class.php');
lmb_require(dirname(__FILE__) . '/lmbOciQueryStatement.class.php');
lmb_require(dirname(__FILE__) . '/lmbOciInsertStatement.class.php');
@@ -23,24 +23,13 @@
* @package dbal
* @version $Id$
*/
-class lmbOciConnection implements lmbDbConnection
+class lmbOciConnection extends lmbDbBaseConnection
{
protected $connectionId;
- protected $config;
//Transaction state. Should be either OCI_COMMIT_ON_SUCCESS or OCI_DEFAULT
protected $tstate = OCI_COMMIT_ON_SUCCESS;
- function __construct($config)
- {
- $this->config = $config;
- }
-
- function getConfig()
- {
- return $this->config;
- }
-
function getType()
{
return 'oci';
@@ -53,11 +42,6 @@
return $this->connectionId;
}
- function getHash()
- {
- return crc32(serialize($this->config));
- }
-
//based on Creole code
function connect()
{
Modified: 3.x/trunk/limb/dbal/src/drivers/pgsql/lmbPgsqlConnection.class.php
===================================================================
--- 3.x/trunk/limb/dbal/src/drivers/pgsql/lmbPgsqlConnection.class.php 2008-05-13 11:11:06 UTC (rev 7014)
+++ 3.x/trunk/limb/dbal/src/drivers/pgsql/lmbPgsqlConnection.class.php 2008-05-13 12:02:24 UTC (rev 7015)
@@ -6,7 +6,7 @@
* @copyright Copyright © 2004-2007 BIT(http://bit-creative.com)
* @license LGPL http://www.gnu.org/copyleft/lesser.html
*/
-lmb_require('limb/dbal/src/drivers/lmbDbConnection.interface.php');
+lmb_require('limb/dbal/src/drivers/lmbDbBaseConnection.class.php');
lmb_require(dirname(__FILE__) . '/lmbPgsqlQueryStatement.class.php');
lmb_require(dirname(__FILE__) . '/lmbPgsqlDropStatement.class.php');
lmb_require(dirname(__FILE__) . '/lmbPgsqlInsertStatement.class.php');
@@ -21,17 +21,11 @@
* @package dbal
* @version $Id$
*/
-class lmbPgsqlConnection implements lmbDbConnection
+class lmbPgsqlConnection extends lmbDbBaseConnection
{
protected $connectionId;
- protected $config;
protected $statement_number = 0;
- function __construct($config)
- {
- $this->config = $config;
- }
-
function getType()
{
return 'pgsql';
@@ -51,11 +45,6 @@
return ++$this->statement_number;
}
- function getHash()
- {
- return crc32(serialize($this->config));
- }
-
function connect()
{
Modified: 3.x/trunk/limb/dbal/src/drivers/sqlite/lmbSqliteConnection.class.php
===================================================================
--- 3.x/trunk/limb/dbal/src/drivers/sqlite/lmbSqliteConnection.class.php 2008-05-13 11:11:06 UTC (rev 7014)
+++ 3.x/trunk/limb/dbal/src/drivers/sqlite/lmbSqliteConnection.class.php 2008-05-13 12:02:24 UTC (rev 7015)
@@ -7,7 +7,7 @@
* @license LGPL http://www.gnu.org/copyleft/lesser.html
*/
-lmb_require('limb/dbal/src/drivers/lmbDbConnection.interface.php');
+lmb_require('limb/dbal/src/drivers/lmbDbBaseConnection.class.php');
lmb_require(dirname(__FILE__) . '/lmbSqliteDbInfo.class.php');
lmb_require(dirname(__FILE__) . '/lmbSqliteQueryStatement.class.php');
lmb_require(dirname(__FILE__) . '/lmbSqliteInsertStatement.class.php');
@@ -23,17 +23,11 @@
* @package dbal
* @version $Id$
*/
-class lmbSqliteConnection implements lmbDbConnection
+class lmbSqliteConnection extends lmbDbBaseConnection
{
protected $connectionId;
- protected $config;
protected $in_transaction = false;
- function __construct($config)
- {
- $this->config = $config;
- }
-
function getType()
{
return 'sqlite';
@@ -47,11 +41,6 @@
return $this->connectionId;
}
- function getHash()
- {
- return crc32(serialize($this->config));
- }
-
function connect()
{
$this->connectionId = sqlite_open($this->config['database'], 0666, $error);
Modified: 3.x/trunk/limb/dbal/src/drivers/sqlite/lmbSqliteRecord.class.php
===================================================================
--- 3.x/trunk/limb/dbal/src/drivers/sqlite/lmbSqliteRecord.class.php 2008-05-13 11:11:06 UTC (rev 7014)
+++ 3.x/trunk/limb/dbal/src/drivers/sqlite/lmbSqliteRecord.class.php 2008-05-13 12:02:24 UTC (rev 7015)
@@ -77,6 +77,12 @@
$this->properties = array();
}
+ function getBit($name)
+ {
+ $value = $this->get($name);
+ return is_null($value) ? null : bindec($value);
+ }
+
function getInteger($name)
{
$value = $this->get($name);
Modified: 3.x/trunk/limb/dbal/src/drivers/sqlite/lmbSqliteStatement.class.php
===================================================================
--- 3.x/trunk/limb/dbal/src/drivers/sqlite/lmbSqliteStatement.class.php 2008-05-13 11:11:06 UTC (rev 7014)
+++ 3.x/trunk/limb/dbal/src/drivers/sqlite/lmbSqliteStatement.class.php 2008-05-13 12:02:24 UTC (rev 7015)
@@ -36,6 +36,11 @@
$this->parameters[$name] = 'null';
}
+ function setBit($name, $value)
+ {
+ $this->parameters[$name] = decbin($value);
+ }
+
function setSmallInt($name, $value)
{
$this->parameters[$name] = is_null($value) ? 'null' : intval($value);
Modified: 3.x/trunk/limb/dbal/src/drivers/sqlite/lmbSqliteTypeInfo.class.php
===================================================================
--- 3.x/trunk/limb/dbal/src/drivers/sqlite/lmbSqliteTypeInfo.class.php 2008-05-13 11:11:06 UTC (rev 7014)
+++ 3.x/trunk/limb/dbal/src/drivers/sqlite/lmbSqliteTypeInfo.class.php 2008-05-13 12:02:24 UTC (rev 7015)
@@ -20,8 +20,9 @@
function getNativeToColumnTypeMapping()
{
return array(
- 'tinyint' => LIMB_DB_TYPE_SMALLINT,
- 'smallint' => LIMB_DB_TYPE_SMALLINT,
+ 'bit' => LIMB_DB_TYPE_INTEGER,
+ 'tinyint' => LIMB_DB_TYPE_INTEGER,
+ 'smallint' => LIMB_DB_TYPE_INTEGER,
'mediumint' => LIMB_DB_TYPE_INTEGER,
'int' => LIMB_DB_TYPE_INTEGER,
'integer' => LIMB_DB_TYPE_INTEGER,
Modified: 3.x/trunk/limb/dbal/src/toolkit/lmbDbTools.class.php
===================================================================
--- 3.x/trunk/limb/dbal/src/toolkit/lmbDbTools.class.php 2008-05-13 11:11:06 UTC (rev 7014)
+++ 3.x/trunk/limb/dbal/src/toolkit/lmbDbTools.class.php 2008-05-13 12:02:24 UTC (rev 7015)
@@ -66,11 +66,19 @@
protected function _getDbDsnHash($dsn)
{
- if(is_object($dsn))
- $dsn = $dsn->toString();
- return md5($dsn);
+ $dsn = self :: castToDsnObject($dsn);
+ return md5($dsn->toString());
}
+ static function castToDsnObject($dsn)
+ {
+ if(is_object($dsn) && ($dsn instanceof lmbDbDSN))
+ return $dsn;
+ if(is_object($dsn) && ($dsn instanceof lmbSet))
+ new lmbDbDSN($dsn->export());
+ return new lmbDbDSN($dsn);
+ }
+
protected function _tryLoadDsnFromEnvironment($conf, $name)
{
$env = $conf->get($this->db_env);
@@ -95,8 +103,7 @@
function setDbDSNByName($name, $dsn)
{
- if(!is_object($dsn))
- $dsn = new lmbDbDSN($dsn);
+ $dsn = self :: castToDsnObject($dsn);
$this->dsnes_names[$name] = $this->_getDbDsnHash($dsn);
$this->dsnes_available[$this->dsnes_names[$name]] = $dsn;
@@ -172,8 +179,7 @@
function createDbConnection($dsn)
{
- if(!is_object($dsn))
- $dsn = new lmbDbDSN($dsn);
+ $dsn = self :: castToDsnObject($dsn);
$driver = $dsn->getDriver();
$class = 'lmb' . ucfirst($driver) . 'Connection';
Modified: 3.x/trunk/limb/dbal/tests/cases/non-driver/lmbDBALTest.class.php
===================================================================
--- 3.x/trunk/limb/dbal/tests/cases/non-driver/lmbDBALTest.class.php 2008-05-13 11:11:06 UTC (rev 7014)
+++ 3.x/trunk/limb/dbal/tests/cases/non-driver/lmbDBALTest.class.php 2008-05-13 12:02:24 UTC (rev 7015)
@@ -33,7 +33,7 @@
function testSetDefaultDSN()
{
- lmbDBAL :: setDefaultDSN($boo = new lmbObject());
+ lmbDBAL :: setDefaultDSN($boo = new lmbDbDSN('mysql://localhost/db_name'));
$this->assertEqual($this->toolkit->getDefaultDbDSN(), $boo);
}
More information about the limb-svn
mailing list