mirror of
https://github.com/dg/dibi.git
synced 2025-08-02 20:27:35 +02:00
DibiException is NException descendant
This commit is contained in:
@@ -71,7 +71,7 @@ class DibiPdoDriver extends NObject implements DibiDriverInterface
|
|||||||
try {
|
try {
|
||||||
$this->connection = new PDO($config['dsn'], $config['username'], $config['password'], $config['options']);
|
$this->connection = new PDO($config['dsn'], $config['username'], $config['password'], $config['options']);
|
||||||
} catch (PDOException $e) {
|
} catch (PDOException $e) {
|
||||||
throw $this->convertException($e);
|
throw new DibiDriverException($e->getMessage(), $e->getCode());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$this->connection) {
|
if (!$this->connection) {
|
||||||
@@ -106,7 +106,7 @@ class DibiPdoDriver extends NObject implements DibiDriverInterface
|
|||||||
try {
|
try {
|
||||||
$this->resultset = $this->connection->query($sql);
|
$this->resultset = $this->connection->query($sql);
|
||||||
} catch (PDOException $e) {
|
} catch (PDOException $e) {
|
||||||
throw $this->convertException($e);
|
throw new DibiDriverException($e->getMessage(), $e->getCode(), $sql);
|
||||||
}
|
}
|
||||||
return $this->resultset instanceof PDOStatement;
|
return $this->resultset instanceof PDOStatement;
|
||||||
}
|
}
|
||||||
@@ -146,7 +146,7 @@ class DibiPdoDriver extends NObject implements DibiDriverInterface
|
|||||||
try {
|
try {
|
||||||
$this->connection->beginTransaction();
|
$this->connection->beginTransaction();
|
||||||
} catch (PDOException $e) {
|
} catch (PDOException $e) {
|
||||||
throw $this->convertException($e);
|
throw new DibiDriverException($e->getMessage(), $e->getCode());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -161,7 +161,7 @@ class DibiPdoDriver extends NObject implements DibiDriverInterface
|
|||||||
try {
|
try {
|
||||||
$this->connection->commit();
|
$this->connection->commit();
|
||||||
} catch (PDOException $e) {
|
} catch (PDOException $e) {
|
||||||
throw $this->convertException($e);
|
throw new DibiDriverException($e->getMessage(), $e->getCode());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -176,7 +176,7 @@ class DibiPdoDriver extends NObject implements DibiDriverInterface
|
|||||||
try {
|
try {
|
||||||
$this->connection->rollBack();
|
$this->connection->rollBack();
|
||||||
} catch (PDOException $e) {
|
} catch (PDOException $e) {
|
||||||
throw $this->convertException($e);
|
throw new DibiDriverException($e->getMessage(), $e->getCode());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -316,17 +316,4 @@ class DibiPdoDriver extends NObject implements DibiDriverInterface
|
|||||||
function getDibiReflection()
|
function getDibiReflection()
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Disconnects from a database
|
|
||||||
*
|
|
||||||
* @param PDOException
|
|
||||||
* @return DibiDriverException
|
|
||||||
*/
|
|
||||||
private function convertException($e)
|
|
||||||
{
|
|
||||||
return new DibiDriverException($e->getMessage(), $e->getCode());
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -27,7 +27,7 @@
|
|||||||
* @package dibi
|
* @package dibi
|
||||||
* @version $Revision$ $Date$
|
* @version $Revision$ $Date$
|
||||||
*/
|
*/
|
||||||
class DibiException extends Exception
|
class DibiException extends NException
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -30,6 +30,9 @@
|
|||||||
*/
|
*/
|
||||||
class NException extends Exception
|
class NException extends Exception
|
||||||
{
|
{
|
||||||
|
/** @var Exception */
|
||||||
|
private $cause;
|
||||||
|
|
||||||
/** @var callback */
|
/** @var callback */
|
||||||
private static $oldHandler;
|
private static $oldHandler;
|
||||||
|
|
||||||
@@ -37,6 +40,49 @@ class NException extends Exception
|
|||||||
private static $handlerClass;
|
private static $handlerClass;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes the cause of this throwable to the specified value
|
||||||
|
*
|
||||||
|
* @param Exception
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function initCause(Exception $cause)
|
||||||
|
{
|
||||||
|
if ($this->cause === NULL) {
|
||||||
|
$this->cause = $cause;
|
||||||
|
} else {
|
||||||
|
throw new BadMethodCallException('Cause was already assigned');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the Exception instance that caused the current exception
|
||||||
|
*
|
||||||
|
* @return Exception
|
||||||
|
*/
|
||||||
|
public function getCause()
|
||||||
|
{
|
||||||
|
return $this->cause;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns string represenation of exception
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function __toString()
|
||||||
|
{
|
||||||
|
return parent::__toString() . ($this->cause === NULL ? '' : "\nCaused by " . $this->cause->__toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enables converting all PHP errors to exceptions
|
* Enables converting all PHP errors to exceptions
|
||||||
*
|
*
|
||||||
|
@@ -198,7 +198,7 @@ abstract class NObject
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Does method exist? Case sensitive, filters protected & private, doesn't recognize static methods (works good since 5.0.4)
|
* Does public method exist? (case sensitive)
|
||||||
*
|
*
|
||||||
* @param string class name
|
* @param string class name
|
||||||
* @param string method name
|
* @param string method name
|
||||||
@@ -208,6 +208,11 @@ abstract class NObject
|
|||||||
{
|
{
|
||||||
static $cache;
|
static $cache;
|
||||||
if (!isset($cache[$c])) {
|
if (!isset($cache[$c])) {
|
||||||
|
// get_class_methods returns private, protected and public methods of NObject (doesn't matter)
|
||||||
|
// only only public methods of descendants (perfect!)
|
||||||
|
// but returns static methods too (nothing doing...)
|
||||||
|
// and is much faster than reflection
|
||||||
|
// (works good since 5.0.4)
|
||||||
$cache[$c] = array_flip(get_class_methods($c));
|
$cache[$c] = array_flip(get_class_methods($c));
|
||||||
}
|
}
|
||||||
return isset($cache[$c][$m]);
|
return isset($cache[$c][$m]);
|
||||||
|
Reference in New Issue
Block a user