mirror of
https://github.com/dg/dibi.git
synced 2025-08-02 20:27:35 +02:00
* better datetime converting in DibiResult (see http://forum.dibiphp.com/viewtopic.php?pid=2331)
* added support for Nette_Debug * renamed NObject -> Nette_Object (Nette::Object in PHP 5.3)
This commit is contained in:
@@ -23,6 +23,13 @@
|
|||||||
/**
|
/**
|
||||||
* Custom output for Nette::Debug.
|
* Custom output for Nette::Debug.
|
||||||
*/
|
*/
|
||||||
interface IDebuggable
|
interface Nette_IDebuggable
|
||||||
{
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns custom panels.
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
function getPanels();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -61,7 +61,7 @@
|
|||||||
* @package Nette
|
* @package Nette
|
||||||
* @version $Revision$ $Date$
|
* @version $Revision$ $Date$
|
||||||
*/
|
*/
|
||||||
abstract class NObject
|
abstract class Nette_Object
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -112,7 +112,7 @@ class DirectoryNotFoundException extends IOException
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* User attempt to terminate the current script
|
* User attempt to terminate the current script.
|
||||||
*/
|
*/
|
||||||
class AbortException extends RuntimeException
|
class AbortException extends RuntimeException
|
||||||
{
|
{
|
||||||
|
@@ -32,8 +32,8 @@ if (version_compare(PHP_VERSION, '5.1.0', '<')) {
|
|||||||
|
|
||||||
// nette libraries
|
// nette libraries
|
||||||
if (!class_exists('NotImplementedException', FALSE)) { require_once dirname(__FILE__) . '/Nette/exceptions.php'; }
|
if (!class_exists('NotImplementedException', FALSE)) { require_once dirname(__FILE__) . '/Nette/exceptions.php'; }
|
||||||
if (!class_exists('NObject', FALSE)) { require_once dirname(__FILE__) . '/Nette/Object.php'; }
|
if (!class_exists('Nette_Object', FALSE)) { require_once dirname(__FILE__) . '/Nette/Object.php'; }
|
||||||
if (!interface_exists('IDebuggable', FALSE)) { require_once dirname(__FILE__) . '/Nette/IDebuggable.php'; }
|
if (!interface_exists('Nette_IDebuggable', FALSE)) { require_once dirname(__FILE__) . '/Nette/IDebuggable.php'; }
|
||||||
|
|
||||||
// dibi libraries
|
// dibi libraries
|
||||||
require_once dirname(__FILE__) . '/libs/interfaces.php';
|
require_once dirname(__FILE__) . '/libs/interfaces.php';
|
||||||
@@ -154,6 +154,10 @@ class dibi
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/********************* connections handling ****************d*g**/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new DibiConnection object and connects it to specified database.
|
* Creates a new DibiConnection object and connects it to specified database.
|
||||||
*
|
*
|
||||||
@@ -164,7 +168,11 @@ class dibi
|
|||||||
*/
|
*/
|
||||||
public static function connect($config = array(), $name = 0)
|
public static function connect($config = array(), $name = 0)
|
||||||
{
|
{
|
||||||
if (is_array($config) || $config instanceof IMap) {
|
if (class_exists('Nette_Debug', FALSE) && Nette_Debug::isEnabled()) {
|
||||||
|
Nette_Debug::addColophon(array(__CLASS__, 'getColophon'));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is_array($config) || $config instanceof Nette_Collections_IMap) {
|
||||||
$config['name'] = $name;
|
$config['name'] = $name;
|
||||||
} else {
|
} else {
|
||||||
$config .= '&name=' . urlencode($name);
|
$config .= '&name=' . urlencode($name);
|
||||||
@@ -238,6 +246,10 @@ class dibi
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/********************* monostate for active connection ****************d*g**/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generates and executes SQL query - Monostate for DibiConnection::query().
|
* Generates and executes SQL query - Monostate for DibiConnection::query().
|
||||||
*
|
*
|
||||||
@@ -413,6 +425,10 @@ class dibi
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/********************* data types ****************d*g**/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Pseudotype for timestamp representation.
|
* Pseudotype for timestamp representation.
|
||||||
*
|
*
|
||||||
@@ -448,6 +464,10 @@ class dibi
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/********************* substitutions ****************d*g**/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new substitution pair for indentifiers.
|
* Create a new substitution pair for indentifiers.
|
||||||
*
|
*
|
||||||
@@ -491,6 +511,10 @@ class dibi
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/********************* event handling ****************d*g**/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add new event handler.
|
* Add new event handler.
|
||||||
*
|
*
|
||||||
@@ -543,6 +567,10 @@ class dibi
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/********************* misc tools ****************d*g**/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Prints out a syntax highlighted version of the SQL command or DibiResult.
|
* Prints out a syntax highlighted version of the SQL command or DibiResult.
|
||||||
*
|
*
|
||||||
@@ -604,4 +632,17 @@ class dibi
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns brief descriptions.
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public static function getColophon()
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
'dibi version: ' . dibi::VERSION,
|
||||||
|
'Number or queries: ' . dibi::$numOfQueries . (dibi::$totalTime === NULL ? '' : ' (elapsed time: ' . sprintf('%0.3f', dibi::$totalTime * 1000) . ' ms)'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -34,7 +34,7 @@
|
|||||||
* @package dibi
|
* @package dibi
|
||||||
* @version $Revision$ $Date$
|
* @version $Revision$ $Date$
|
||||||
*/
|
*/
|
||||||
class DibiMsSqlDriver extends NObject implements IDibiDriver
|
class DibiMsSqlDriver extends Nette_Object implements IDibiDriver
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -40,7 +40,7 @@
|
|||||||
* @package dibi
|
* @package dibi
|
||||||
* @version $Revision$ $Date$
|
* @version $Revision$ $Date$
|
||||||
*/
|
*/
|
||||||
class DibiMySqlDriver extends NObject implements IDibiDriver
|
class DibiMySqlDriver extends Nette_Object implements IDibiDriver
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -40,7 +40,7 @@
|
|||||||
* @package dibi
|
* @package dibi
|
||||||
* @version $Revision$ $Date$
|
* @version $Revision$ $Date$
|
||||||
*/
|
*/
|
||||||
class DibiMySqliDriver extends NObject implements IDibiDriver
|
class DibiMySqliDriver extends Nette_Object implements IDibiDriver
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -33,7 +33,7 @@
|
|||||||
* @package dibi
|
* @package dibi
|
||||||
* @version $Revision$ $Date$
|
* @version $Revision$ $Date$
|
||||||
*/
|
*/
|
||||||
class DibiOdbcDriver extends NObject implements IDibiDriver
|
class DibiOdbcDriver extends Nette_Object implements IDibiDriver
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -33,7 +33,7 @@
|
|||||||
* @package dibi
|
* @package dibi
|
||||||
* @version $Revision$ $Date$
|
* @version $Revision$ $Date$
|
||||||
*/
|
*/
|
||||||
class DibiOracleDriver extends NObject implements IDibiDriver
|
class DibiOracleDriver extends Nette_Object implements IDibiDriver
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -33,7 +33,7 @@
|
|||||||
* @package dibi
|
* @package dibi
|
||||||
* @version $Revision$ $Date$
|
* @version $Revision$ $Date$
|
||||||
*/
|
*/
|
||||||
class DibiPdoDriver extends NObject implements IDibiDriver
|
class DibiPdoDriver extends Nette_Object implements IDibiDriver
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -34,7 +34,7 @@
|
|||||||
* @package dibi
|
* @package dibi
|
||||||
* @version $Revision$ $Date$
|
* @version $Revision$ $Date$
|
||||||
*/
|
*/
|
||||||
class DibiPostgreDriver extends NObject implements IDibiDriver
|
class DibiPostgreDriver extends Nette_Object implements IDibiDriver
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -34,7 +34,7 @@
|
|||||||
* @package dibi
|
* @package dibi
|
||||||
* @version $Revision$ $Date$
|
* @version $Revision$ $Date$
|
||||||
*/
|
*/
|
||||||
class DibiSqliteDriver extends NObject implements IDibiDriver
|
class DibiSqliteDriver extends Nette_Object implements IDibiDriver
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -27,7 +27,7 @@
|
|||||||
* @package dibi
|
* @package dibi
|
||||||
* @version $Revision$ $Date$
|
* @version $Revision$ $Date$
|
||||||
*/
|
*/
|
||||||
class DibiConnection extends NObject
|
class DibiConnection extends Nette_Object
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Current connection configuration.
|
* Current connection configuration.
|
||||||
@@ -58,7 +58,7 @@ class DibiConnection extends NObject
|
|||||||
/**
|
/**
|
||||||
* Creates object and (optionally) connects to a database.
|
* Creates object and (optionally) connects to a database.
|
||||||
*
|
*
|
||||||
* @param array|string|IMap connection parameters
|
* @param array|string|Nette_Collections_IMap connection parameters
|
||||||
* @throws DibiException
|
* @throws DibiException
|
||||||
*/
|
*/
|
||||||
public function __construct($config)
|
public function __construct($config)
|
||||||
@@ -67,7 +67,7 @@ class DibiConnection extends NObject
|
|||||||
if (is_string($config)) {
|
if (is_string($config)) {
|
||||||
parse_str($config, $config);
|
parse_str($config, $config);
|
||||||
|
|
||||||
} elseif ($config instanceof IMap) {
|
} elseif ($config instanceof Nette_Collections_IMap) {
|
||||||
$config = $config->toArray();
|
$config = $config->toArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -27,7 +27,7 @@
|
|||||||
* @package dibi
|
* @package dibi
|
||||||
* @version $Revision$ $Date$
|
* @version $Revision$ $Date$
|
||||||
*/
|
*/
|
||||||
class DibiDataSource extends NObject implements IDataSource
|
class DibiDataSource extends Nette_Object implements IDataSource
|
||||||
{
|
{
|
||||||
/** @var DibiConnection */
|
/** @var DibiConnection */
|
||||||
private $connection;
|
private $connection;
|
||||||
|
@@ -42,7 +42,7 @@ class DibiException extends Exception
|
|||||||
* @package dibi
|
* @package dibi
|
||||||
* @version $Revision$ $Date$
|
* @version $Revision$ $Date$
|
||||||
*/
|
*/
|
||||||
class DibiDriverException extends DibiException implements IDebuggable
|
class DibiDriverException extends DibiException implements Nette_IDebuggable
|
||||||
{
|
{
|
||||||
/** @var string */
|
/** @var string */
|
||||||
private static $errorMsg;
|
private static $errorMsg;
|
||||||
@@ -87,6 +87,27 @@ class DibiDriverException extends DibiException implements IDebuggable
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/********************* interface Nette_IDebuggable ****************d*g**/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns custom panels.
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getPanels()
|
||||||
|
{
|
||||||
|
$panels = array();
|
||||||
|
if ($this->sql !== NULL) {
|
||||||
|
$panels['SQL'] = array(
|
||||||
|
'expanded' => TRUE,
|
||||||
|
'content' => dibi::dump($this->sql, TRUE),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return $panels;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/********************* error catching ****************d*g**/
|
/********************* error catching ****************d*g**/
|
||||||
|
|
||||||
|
|
||||||
|
@@ -27,7 +27,7 @@
|
|||||||
* @package dibi
|
* @package dibi
|
||||||
* @version $Revision$ $Date$
|
* @version $Revision$ $Date$
|
||||||
*/
|
*/
|
||||||
final class DibiLogger extends NObject
|
final class DibiLogger extends Nette_Object
|
||||||
{
|
{
|
||||||
/** @var string Name of the file where SQL errors should be logged */
|
/** @var string Name of the file where SQL errors should be logged */
|
||||||
private $file;
|
private $file;
|
||||||
|
@@ -41,7 +41,7 @@
|
|||||||
* @package dibi
|
* @package dibi
|
||||||
* @version $Revision$ $Date$
|
* @version $Revision$ $Date$
|
||||||
*/
|
*/
|
||||||
class DibiResult extends NObject implements IDataSource
|
class DibiResult extends Nette_Object implements IDataSource
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* IDibiDriver.
|
* IDibiDriver.
|
||||||
@@ -240,7 +240,7 @@ class DibiResult extends NObject implements IDataSource
|
|||||||
if ($this->xlat !== NULL) {
|
if ($this->xlat !== NULL) {
|
||||||
foreach ($this->xlat as $col => $type) {
|
foreach ($this->xlat as $col => $type) {
|
||||||
if (isset($row[$col])) {
|
if (isset($row[$col])) {
|
||||||
$row[$col] = $this->convert($row[$col], $type);
|
$row[$col] = $this->convert($row[$col], $type[0], $type[1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -269,7 +269,8 @@ class DibiResult extends NObject implements IDataSource
|
|||||||
// types-converting?
|
// types-converting?
|
||||||
$key = key($row);
|
$key = key($row);
|
||||||
if (isset($this->xlat[$key])) {
|
if (isset($this->xlat[$key])) {
|
||||||
return $this->convert($value, $this->xlat[$key]);
|
$type = $this->xlat[$key];
|
||||||
|
return $this->convert($value, $type[0], $type[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $value;
|
return $value;
|
||||||
@@ -447,14 +448,9 @@ class DibiResult extends NObject implements IDataSource
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
final public function setType($col, $type = NULL)
|
final public function setType($col, $type = NULL, $format = NULL)
|
||||||
{
|
{
|
||||||
if (is_array($col)) {
|
$this->xlat[$col] = array($type, $format);
|
||||||
$this->xlat = $col;
|
|
||||||
|
|
||||||
} else {
|
|
||||||
$this->xlat[$col] = $type;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -466,7 +462,7 @@ class DibiResult extends NObject implements IDataSource
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
final public function convert($value, $type)
|
final public function convert($value, $type, $format = NULL)
|
||||||
{
|
{
|
||||||
if ($value === NULL || $value === FALSE) {
|
if ($value === NULL || $value === FALSE) {
|
||||||
return $value;
|
return $value;
|
||||||
@@ -478,7 +474,7 @@ class DibiResult extends NObject implements IDataSource
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($type === dibi::FIELD_DATE || $type === dibi::FIELD_DATETIME) {
|
if ($type === dibi::FIELD_DATE || $type === dibi::FIELD_DATETIME) {
|
||||||
return strtotime($value);
|
return $format === NULL ? strtotime($value) : date($format, strtotime($value));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($type === dibi::FIELD_BOOL) {
|
if ($type === dibi::FIELD_BOOL) {
|
||||||
|
@@ -26,7 +26,7 @@
|
|||||||
* @package dibi
|
* @package dibi
|
||||||
* @version $Revision$ $Date$
|
* @version $Revision$ $Date$
|
||||||
*/
|
*/
|
||||||
abstract class DibiTable extends NObject
|
abstract class DibiTable extends Nette_Object
|
||||||
{
|
{
|
||||||
/** @var string primary key mask */
|
/** @var string primary key mask */
|
||||||
public static $primaryMask = 'id';
|
public static $primaryMask = 'id';
|
||||||
|
@@ -27,7 +27,7 @@
|
|||||||
* @package dibi
|
* @package dibi
|
||||||
* @version $Revision$ $Date$
|
* @version $Revision$ $Date$
|
||||||
*/
|
*/
|
||||||
final class DibiTranslator extends NObject
|
final class DibiTranslator extends Nette_Object
|
||||||
{
|
{
|
||||||
/** @var string */
|
/** @var string */
|
||||||
public $sql;
|
public $sql;
|
||||||
|
@@ -23,7 +23,7 @@
|
|||||||
* Default implemenation of IDibiVariable.
|
* Default implemenation of IDibiVariable.
|
||||||
* @package dibi
|
* @package dibi
|
||||||
*/
|
*/
|
||||||
class DibiVariable extends NObject implements IDibiVariable
|
class DibiVariable extends Nette_Object implements IDibiVariable
|
||||||
{
|
{
|
||||||
/** @var mixed */
|
/** @var mixed */
|
||||||
public $value;
|
public $value;
|
||||||
|
@@ -15,5 +15,7 @@ $res = dibi::query('SELECT * FROM [customers]');
|
|||||||
|
|
||||||
// auto-convert this column to integer
|
// auto-convert this column to integer
|
||||||
$res->setType('customer_id', Dibi::FIELD_INTEGER);
|
$res->setType('customer_id', Dibi::FIELD_INTEGER);
|
||||||
|
$res->setType('added', Dibi::FIELD_DATETIME, 'H:i j.n.Y');
|
||||||
|
|
||||||
$row = $res->fetch();
|
$row = $res->fetch();
|
||||||
var_dump($row);
|
var_dump($row);
|
||||||
|
19
examples/nette-debug.php
Normal file
19
examples/nette-debug.php
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
<h1>Nette::Debug && dibi example</h1>
|
||||||
|
<?php
|
||||||
|
|
||||||
|
require_once '../dibi/dibi.php';
|
||||||
|
require_once 'Nette/Debug.php';
|
||||||
|
|
||||||
|
|
||||||
|
Nette_Debug::enable();
|
||||||
|
|
||||||
|
|
||||||
|
dibi::connect(array(
|
||||||
|
'driver' => 'sqlite',
|
||||||
|
'database' => 'sample.sdb',
|
||||||
|
));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// throws error
|
||||||
|
dibi::query('SELECT FROM [customers] WHERE [customer_id] < %i', 38);
|
Binary file not shown.
Reference in New Issue
Block a user