/**
* Database independent query interface
*
- * PHP versions 4 and 5
+ * PHP version 5
*
* LICENSE: This source file is subject to version 3.0 of the PHP license
* that is available through the world-wide-web at the following URI:
* @author Daniel Convissor <danielc@php.net>
* @copyright 1997-2007 The PHP Group
* @license http://www.php.net/license/3_0.txt PHP License 3.0
- * @version CVS: $Id: DB.php,v 1.88 2007/08/12 05:27:25 aharvey Exp $
+ * @version CVS: $Id$
* @link http://pear.php.net/package/DB
*/
* @author Daniel Convissor <danielc@php.net>
* @copyright 1997-2007 The PHP Group
* @license http://www.php.net/license/3_0.txt PHP License 3.0
- * @version Release: 1.7.13
+ * @version Release: 1.9.2
* @link http://pear.php.net/package/DB
*/
class DB
{
- // {{{ &factory()
+ // {{{ factory()
/**
* Create a new DB object for the specified database type but don't
*
* @see DB_common::setOption()
*/
- function &factory($type, $options = false)
+ public static function factory($type, $options = false)
{
if (!is_array($options)) {
$options = array('persistent' => $options);
}
// }}}
- // {{{ &connect()
+ // {{{ connect()
/**
* Create a new DB object including a connection to the specified database
* 'portability' => DB_PORTABILITY_ALL,
* );
*
- * $db =& DB::connect($dsn, $options);
+ * $db = DB::connect($dsn, $options);
* if (PEAR::isError($db)) {
* die($db->getMessage());
* }
*
* @uses DB::parseDSN(), DB_common::setOption(), PEAR::isError()
*/
- function &connect($dsn, $options = array())
+ public static function connect($dsn, $options = array())
{
$dsninfo = DB::parseDSN($dsn);
$type = $dsninfo['phptype'];
if (!class_exists($classname)) {
$tmp = PEAR::raiseError(null, DB_ERROR_NOT_FOUND, null, null,
"Unable to include the DB/{$type}.php"
- . " file for '$dsn'",
+ . " file for '"
+ . DB::getDSNString($dsn, true) . "'",
'DB_Error', true);
return $tmp;
}
*/
function apiVersion()
{
- return '1.7.13';
+ return '1.9.2';
}
// }}}
*
* @return bool whether $value is DB_Error object
*/
- function isError($value)
+ public static function isError($value)
{
- return is_a($value, 'DB_Error');
+ return is_object($value) && is_a($value, 'DB_Error');
}
// }}}
*
* @return bool whether $value is a DB_<driver> object
*/
- function isConnection($value)
+ public static function isConnection($value)
{
return (is_object($value) &&
is_subclass_of($value, 'db_common') &&
*
* @return boolean whether $query is a data manipulation query
*/
- function isManip($query)
+ public static function isManip($query)
{
$manips = 'INSERT|UPDATE|DELETE|REPLACE|'
. 'CREATE|DROP|'
* @return string the error message or false if the error code was
* not recognized
*/
- function errorMessage($value)
+ public static function errorMessage($value)
{
static $errorMessages;
if (!isset($errorMessages)) {
* + username: User name for login
* + password: Password for login
*/
- function parseDSN($dsn)
+ public static function parseDSN($dsn)
{
$parsed = array(
'phptype' => false,
$parsed['dbsyntax'] = $str;
}
- if (!count($dsn)) {
+ if (!strlen($dsn)) {
return $parsed;
}
* @param boolean true to hide the password, false to include it
* @return string
*/
- function getDSNString($dsn, $hidePassword) {
+ public static function getDSNString($dsn, $hidePassword) {
/* Calling parseDSN will ensure that we have all the array elements
* defined, and means that we deal with strings and array in the same
* manner. */
* @author Stig Bakken <ssb@php.net>
* @copyright 1997-2007 The PHP Group
* @license http://www.php.net/license/3_0.txt PHP License 3.0
- * @version Release: 1.7.13
+ * @version Release: 1.9.2
* @link http://pear.php.net/package/DB
*/
class DB_Error extends PEAR_Error
*
* @see PEAR_Error
*/
- function DB_Error($code = DB_ERROR, $mode = PEAR_ERROR_RETURN,
+ function __construct($code = DB_ERROR, $mode = PEAR_ERROR_RETURN,
$level = E_USER_NOTICE, $debuginfo = null)
{
if (is_int($code)) {
- $this->PEAR_Error('DB Error: ' . DB::errorMessage($code), $code,
+ parent::__construct('DB Error: ' . DB::errorMessage($code), $code,
$mode, $level, $debuginfo);
} else {
- $this->PEAR_Error("DB Error: $code", DB_ERROR,
+ parent::__construct("DB Error: $code", DB_ERROR,
$mode, $level, $debuginfo);
}
}
+ /**
+ * Workaround to both avoid the "Redefining already defined constructor"
+ * PHP error and provide backward compatibility in case someone is calling
+ * DB_Error() dynamically
+ */
+ public function __call($method, $arguments)
+ {
+ if ($method == 'DB_Error') {
+ return call_user_func_array(array($this, '__construct'), $arguments);
+ }
+ trigger_error(
+ 'Call to undefined method DB_Error::' . $method . '()', E_USER_ERROR
+ );
+ }
// }}}
}
* @author Stig Bakken <ssb@php.net>
* @copyright 1997-2007 The PHP Group
* @license http://www.php.net/license/3_0.txt PHP License 3.0
- * @version Release: 1.7.13
+ * @version Release: 1.9.2
* @link http://pear.php.net/package/DB
*/
class DB_result
*
* @return void
*/
- function DB_result(&$dbh, $result, $options = array())
+ function __construct(&$dbh, $result, $options = array())
{
$this->autofree = $dbh->options['autofree'];
$this->dbh = &$dbh;
* @author Stig Bakken <ssb@php.net>
* @copyright 1997-2007 The PHP Group
* @license http://www.php.net/license/3_0.txt PHP License 3.0
- * @version Release: 1.7.13
+ * @version Release: 1.9.2
* @link http://pear.php.net/package/DB
* @see DB_common::setFetchMode()
*/
*
* @return void
*/
- function DB_row(&$arr)
+ function __construct(&$arr)
{
foreach ($arr as $key => $value) {
$this->$key = &$arr[$key];