From 6b8df9119dc8fc9727236940030f7c1b8fb55559 Mon Sep 17 00:00:00 2001
From: Gunnar Wrobel
Date: Thu, 11 Feb 2010 09:09:59 +0100
Subject: [PATCH] Extract the error_get_last() handling into a separate
Exception class.
In all cases (Horde_Feed, Horde_Xml_Element, Horde_Yaml, and Horde_Http) where
we throw the result from error_get_last() into the exception class we know
exactly that we are doing so.
Rather than having the Exception class trying to determine what kind of
parameters it might have received we can use a separate class for that.
---
framework/Exception/lib/Horde/Exception.php | 44 +++++----------------
.../Exception/lib/Horde/Exception/LastError.php | 45 ++++++++++++++++++++++
.../Exception/lib/Horde/Exception/NotFound.php | 11 +++---
.../lib/Horde/Exception/PermissionDenied.php | 11 +++---
framework/Exception/package.xml | 2 +
.../test/Horde/Exception/ExceptionTest.php | 13 ++++---
framework/Feed/lib/Horde/Feed/Exception.php | 22 +----------
framework/Feed/package.xml | 4 ++
framework/Http/lib/Horde/Http/Exception.php | 24 +-----------
framework/Http/package.xml | 4 ++
.../lib/Horde/Xml/Element/Exception.php | 25 +-----------
framework/Xml_Element/package.xml | 4 ++
framework/Yaml/lib/Horde/Yaml/Exception.php | 22 +----------
framework/Yaml/package.xml | 4 ++
14 files changed, 94 insertions(+), 141 deletions(-)
create mode 100644 framework/Exception/lib/Horde/Exception/LastError.php
diff --git a/framework/Exception/lib/Horde/Exception.php b/framework/Exception/lib/Horde/Exception.php
index a0248fb82..49f4a5cae 100644
--- a/framework/Exception/lib/Horde/Exception.php
+++ b/framework/Exception/lib/Horde/Exception.php
@@ -1,7 +1,6 @@
getCode();
+ $code = $message->getCode();
}
$message = $message->getMessage();
}
- if (is_null($code_or_lasterror)) {
- $code_or_lasterror = 0;
- }
-
- if (is_array($code_or_lasterror)) {
- if ($message) {
- $message .= $code_or_lasterror['message'];
- } else {
- $message = $code_or_lasterror['message'];
- }
-
- $this->file = $code_or_lasterror['file'];
- $this->line = $code_or_lasterror['line'];
- $code = $code_or_lasterror['type'];
- } else {
- $code = $code_or_lasterror;
- }
-
- if (is_string($code)) {
+ if (is_null($code)) {
+ $code = 0;
+ } else if (is_string($code)) {
$code = null;
}
diff --git a/framework/Exception/lib/Horde/Exception/LastError.php b/framework/Exception/lib/Horde/Exception/LastError.php
new file mode 100644
index 000000000..cb30d6750
--- /dev/null
+++ b/framework/Exception/lib/Horde/Exception/LastError.php
@@ -0,0 +1,45 @@
+file = $code_or_lasterror['file'];
+ $this->line = $code_or_lasterror['line'];
+ } else {
+ parent::__construct($message, $code_or_lasterror);
+ }
+ }
+
+}
diff --git a/framework/Exception/lib/Horde/Exception/NotFound.php b/framework/Exception/lib/Horde/Exception/NotFound.php
index 2c9062751..8deeabffa 100644
--- a/framework/Exception/lib/Horde/Exception/NotFound.php
+++ b/framework/Exception/lib/Horde/Exception/NotFound.php
@@ -17,16 +17,15 @@ class Horde_Exception_NotFound extends Horde_Exception
*
* @see Horde_Exception::__construct()
*
- * @param mixed $message The exception message, a PEAR_Error
- * object, or an Exception object.
- * @param mixed $code_or_lasterror Either a numeric error code, or
- * an array from error_get_last().
+ * @param mixed $message The exception message, a PEAR_Error
+ * object, or an Exception object.
+ * @param mixed $code A numeric error code.
*/
- public function __construct($message = null, $code_or_lasterror = null)
+ public function __construct($message = null, $code = null)
{
if (is_null($message)) {
$message = _("Not Found");
}
- parent::__construct($message, $code_or_lasterror);
+ parent::__construct($message, $code);
}
}
\ No newline at end of file
diff --git a/framework/Exception/lib/Horde/Exception/PermissionDenied.php b/framework/Exception/lib/Horde/Exception/PermissionDenied.php
index b27037e95..547f60662 100644
--- a/framework/Exception/lib/Horde/Exception/PermissionDenied.php
+++ b/framework/Exception/lib/Horde/Exception/PermissionDenied.php
@@ -17,16 +17,15 @@ class Horde_Exception_PermissionDenied extends Horde_Exception
*
* @see Horde_Exception::__construct()
*
- * @param mixed $message The exception message, a PEAR_Error
- * object, or an Exception object.
- * @param mixed $code_or_lasterror Either a numeric error code, or
- * an array from error_get_last().
+ * @param mixed $message The exception message, a PEAR_Error
+ * object, or an Exception object.
+ * @param mixed $code A numeric error code.
*/
- public function __construct($message = null, $code_or_lasterror = null)
+ public function __construct($message = null, $code = null)
{
if (is_null($message)) {
$message = _("Permission Denied");
}
- parent::__construct($message, $code_or_lasterror);
+ parent::__construct($message, $code);
}
}
\ No newline at end of file
diff --git a/framework/Exception/package.xml b/framework/Exception/package.xml
index 030cf663e..7123f9145 100644
--- a/framework/Exception/package.xml
+++ b/framework/Exception/package.xml
@@ -43,6 +43,7 @@ http://pear.php.net/dtd/package-2.0.xsd">
+
@@ -64,6 +65,7 @@ http://pear.php.net/dtd/package-2.0.xsd">
+
diff --git a/framework/Exception/test/Horde/Exception/ExceptionTest.php b/framework/Exception/test/Horde/Exception/ExceptionTest.php
index 40dfae816..6667fab28 100644
--- a/framework/Exception/test/Horde/Exception/ExceptionTest.php
+++ b/framework/Exception/test/Horde/Exception/ExceptionTest.php
@@ -12,9 +12,10 @@
*/
/**
- * Require the tested class.
+ * Require the tested classes.
*/
require_once 'Horde/Exception.php';
+require_once 'Horde/Exception/LastError.php';
/**
* Test for the Horde_Exception:: class.
@@ -63,31 +64,31 @@ class Horde_Exception_ExceptionTest extends PHPUnit_Framework_TestCase
public function testConstructionWithGetlasterrorarrayYieldsMessageFromArray()
{
- $e = new Horde_Exception(null, $this->_getLastError());
+ $e = new Horde_Exception_LastError(null, $this->_getLastError());
$this->assertSame('get_last_error', $e->getMessage());
}
public function testConstructionWithGetlasterrorarrayYieldsCodeFromArray()
{
- $e = new Horde_Exception(null, $this->_getLastError());
+ $e = new Horde_Exception_LastError(null, $this->_getLastError());
$this->assertSame(666, $e->getCode());
}
public function testConstructionWithGetlasterrorarrayYieldsFileFromArray()
{
- $e = new Horde_Exception(null, $this->_getLastError());
+ $e = new Horde_Exception_LastError(null, $this->_getLastError());
$this->assertSame('/some/file.php', $e->getFile());
}
public function testConstructionWithGetlasterrorarrayYieldsLineFromArray()
{
- $e = new Horde_Exception(null, $this->_getLastError());
+ $e = new Horde_Exception_LastError(null, $this->_getLastError());
$this->assertSame(99, $e->getLine());
}
public function testConstructionWithGetlasterrorarrayConcatenatesMessagesFromConstructorAndErrorarray()
{
- $e = new Horde_Exception('An error occurred: ', $this->_getLastError());
+ $e = new Horde_Exception_LastError('An error occurred: ', $this->_getLastError());
$this->assertSame('An error occurred: get_last_error', $e->getMessage());
}
diff --git a/framework/Feed/lib/Horde/Feed/Exception.php b/framework/Feed/lib/Horde/Feed/Exception.php
index 44969cd3f..2a816393b 100644
--- a/framework/Feed/lib/Horde/Feed/Exception.php
+++ b/framework/Feed/lib/Horde/Feed/Exception.php
@@ -8,25 +8,5 @@
* @category Horde
* @package Horde_Feed
*/
-class Horde_Feed_Exception extends Exception {
-
- public function __construct($message = null, $code_or_lasterror = 0)
- {
- if (is_array($code_or_lasterror)) {
- if ($message) {
- $message .= $code_or_lasterror['message'];
- } else {
- $message = $code_or_lasterror['message'];
- }
-
- $this->file = $code_or_lasterror['file'];
- $this->line = $code_or_lasterror['line'];
- $code = $code_or_lasterror['type'];
- } else {
- $code = $code_or_lasterror;
- }
-
- parent::__construct($message, $code);
- }
-
+class Horde_Feed_Exception extends Horde_Exception_LastError {
}
diff --git a/framework/Feed/package.xml b/framework/Feed/package.xml
index 14c583198..1d591c00d 100644
--- a/framework/Feed/package.xml
+++ b/framework/Feed/package.xml
@@ -66,6 +66,10 @@ http://pear.php.net/dtd/package-2.0.xsd">
pear.horde.org
0.4.0
+
+ Exception
+ pear.horde.org
+
diff --git a/framework/Http/lib/Horde/Http/Exception.php b/framework/Http/lib/Horde/Http/Exception.php
index f3fb34917..54d47c4cb 100644
--- a/framework/Http/lib/Horde/Http/Exception.php
+++ b/framework/Http/lib/Horde/Http/Exception.php
@@ -14,28 +14,6 @@
* @category Horde
* @package Horde_Http
*/
-class Horde_Http_Exception extends Exception
+class Horde_Http_Exception extends Horde_Exception_LastError
{
- /**
- * Constructor
- */
- public function __construct($message = null, $code_or_lasterror = 0)
- {
- if (is_array($code_or_lasterror)) {
- if ($message) {
- $message .= $code_or_lasterror['message'];
- } else {
- $message = $code_or_lasterror['message'];
- }
-
- $this->file = $code_or_lasterror['file'];
- $this->line = $code_or_lasterror['line'];
- $code = $code_or_lasterror['type'];
- } else {
- $code = $code_or_lasterror;
- }
-
- parent::__construct($message, $code);
- }
-
}
diff --git a/framework/Http/package.xml b/framework/Http/package.xml
index 7924dde21..c710c1498 100644
--- a/framework/Http/package.xml
+++ b/framework/Http/package.xml
@@ -64,6 +64,10 @@ http://pear.php.net/dtd/package-2.0.xsd">
1.5.0
+ Exception
+ pear.horde.org
+
+
Support
pear.horde.org
diff --git a/framework/Xml_Element/lib/Horde/Xml/Element/Exception.php b/framework/Xml_Element/lib/Horde/Xml/Element/Exception.php
index 500679f77..924c635fd 100644
--- a/framework/Xml_Element/lib/Horde/Xml/Element/Exception.php
+++ b/framework/Xml_Element/lib/Horde/Xml/Element/Exception.php
@@ -12,29 +12,6 @@
* @category Horde
* @package Horde_Xml_Element
*/
-class Horde_Xml_Element_Exception extends Exception
+class Horde_Xml_Element_Exception extends Horde_Exception_LastError
{
- /**
- * Create an exception, filling in some details from the result of
- * error_get_last if they are passed in $code_or_lasterror.
- */
- public function __construct($message = null, $code_or_lasterror = 0)
- {
- if (is_array($code_or_lasterror)) {
- if ($message) {
- $message .= $code_or_lasterror['message'];
- } else {
- $message = $code_or_lasterror['message'];
- }
-
- $this->file = $code_or_lasterror['file'];
- $this->line = $code_or_lasterror['line'];
- $code = $code_or_lasterror['type'];
- } else {
- $code = $code_or_lasterror;
- }
-
- parent::__construct($message, $code);
- }
-
}
diff --git a/framework/Xml_Element/package.xml b/framework/Xml_Element/package.xml
index b97142ee6..d833eab1f 100644
--- a/framework/Xml_Element/package.xml
+++ b/framework/Xml_Element/package.xml
@@ -59,6 +59,10 @@ http://pear.php.net/dtd/package-2.0.xsd">
1.5.0
+
+ Exception
+ pear.horde.org
+
diff --git a/framework/Yaml/lib/Horde/Yaml/Exception.php b/framework/Yaml/lib/Horde/Yaml/Exception.php
index b53159b65..58296ac1c 100644
--- a/framework/Yaml/lib/Horde/Yaml/Exception.php
+++ b/framework/Yaml/lib/Horde/Yaml/Exception.php
@@ -20,26 +20,6 @@
* @category Horde
* @package Horde_Yaml
*/
-class Horde_Yaml_Exception extends Exception
+class Horde_Yaml_Exception extends Horde_Exception_LastError
{
-
- public function __construct($message = null, $code_or_lasterror = 0)
- {
- if (is_array($code_or_lasterror)) {
- if ($message) {
- $message .= $code_or_lasterror['message'];
- } else {
- $message = $code_or_lasterror['message'];
- }
-
- $this->file = $code_or_lasterror['file'];
- $this->line = $code_or_lasterror['line'];
- $code = $code_or_lasterror['type'];
- } else {
- $code = $code_or_lasterror;
- }
-
- parent::__construct($message, $code);
- }
-
}
diff --git a/framework/Yaml/package.xml b/framework/Yaml/package.xml
index 123fddf81..ee5b4b86f 100644
--- a/framework/Yaml/package.xml
+++ b/framework/Yaml/package.xml
@@ -60,6 +60,10 @@ http://pear.php.net/dtd/package-2.0.xsd">
1.4.0b1
+
+ Exception
+ pear.horde.org
+
--
2.11.0