<?php
/**
- * Horde base exception class, which includes the ability to take the
- * output of error_get_last() as $code and mask itself as that error.
+ * Horde base exception class.
*
* Copyright 2008-2010 The Horde Project (http://www.horde.org/)
*
/**
* Exception constructor
*
- * If $code_or_lasterror is passed the return value of
- * error_get_last() (or a matching format), the exception will be
- * rewritten to have its file and line parameters match that of
- * the array, and any message in the array will be appended to
- * $message.
- *
- * @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_object($message) &&
method_exists($message, 'getMessage')) {
- if (is_null($code_or_lasterror) &&
+ if (is_null($code) &&
method_exists($message, 'getCode')) {
- $code_or_lasterror = $message->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;
}
--- /dev/null
+<?php
+/**
+ * Horde exception class that accepts output of error_get_last() as $code and
+ * mask itself as that error.
+ *
+ * Copyright 2008-2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ *
+ * @category Horde
+ * @package Horde_Exception
+ */
+class Horde_Exception_LastError extends Horde_Exception
+{
+ /**
+ * Exception constructor
+ *
+ * If $lasterror is passed the return value of error_get_last() (or a
+ * matching format), the exception will be rewritten to have its file and
+ * line parameters match that of the array, and any message in the array
+ * will be appended to $message.
+ *
+ * @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().
+ */
+ public function __construct($message = null, $code_or_lasterror = null)
+ {
+ if (is_array($code_or_lasterror)) {
+ if ($message) {
+ $message .= $code_or_lasterror['message'];
+ } else {
+ $message = $code_or_lasterror['message'];
+ }
+ parent::__construct($message, $code_or_lasterror['type']);
+ $this->file = $code_or_lasterror['file'];
+ $this->line = $code_or_lasterror['line'];
+ } else {
+ parent::__construct($message, $code_or_lasterror);
+ }
+ }
+
+}
*
* @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
*
* @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
<dir name="lib">
<dir name="Horde">
<dir name="Exception">
+ <file name="LastError.php" role="php" />
<file name="NotFound.php" role="php" />
<file name="PermissionDenied.php" role="php" />
</dir> <!-- /lib/Exception -->
<phprelease>
<filelist>
<install name="lib/Horde/Exception.php" as="Horde/Exception.php" />
+ <install name="lib/Horde/Exception/LastError.php" as="Horde/Exception/LastError.php" />
<install name="lib/Horde/Exception/NotFound.php" as="Horde/Exception/NotFound.php" />
<install name="lib/Horde/Exception/PermissionDenied.php" as="Horde/Exception/PermissionDenied.php" />
</filelist>
*/
/**
- * 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.
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());
}
* @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 {
}
<channel>pear.horde.org</channel>
<min>0.4.0</min>
</package>
+ <package>
+ <name>Exception</name>
+ <channel>pear.horde.org</channel>
+ </package>
</required>
</dependencies>
<phprelease>
* @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);
- }
-
}
<min>1.5.0</min>
</pearinstaller>
<package>
+ <name>Exception</name>
+ <channel>pear.horde.org</channel>
+ </package>
+ <package>
<name>Support</name>
<channel>pear.horde.org</channel>
</package>
* @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);
- }
-
}
<pearinstaller>
<min>1.5.0</min>
</pearinstaller>
+ <package>
+ <name>Exception</name>
+ <channel>pear.horde.org</channel>
+ </package>
</required>
</dependencies>
<phprelease>
* @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);
- }
-
}
<pearinstaller>
<min>1.4.0b1</min>
</pearinstaller>
+ <package>
+ <name>Exception</name>
+ <channel>pear.horde.org</channel>
+ </package>
</required>
</dependencies>
<phprelease>