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