diff options
Diffstat (limited to 'libs/Zend/Exception.php')
-rw-r--r-- | libs/Zend/Exception.php | 82 |
1 files changed, 73 insertions, 9 deletions
diff --git a/libs/Zend/Exception.php b/libs/Zend/Exception.php index 3cb5704b3f..bbfb792e93 100644 --- a/libs/Zend/Exception.php +++ b/libs/Zend/Exception.php @@ -14,18 +14,82 @@ * * @category Zend * @package Zend - * @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com) + * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License - * @version $Id: Exception.php 16541 2009-07-07 06:59:03Z bkarwin $ */ - /** - * @category Zend - * @package Zend - * @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com) - * @license http://framework.zend.com/license/new-bsd New BSD License - */ +* @category Zend +* @package Zend +* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com) +* @license http://framework.zend.com/license/new-bsd New BSD License +*/ class Zend_Exception extends Exception -{} +{ + /** + * @var null|Exception + */ + private $_previous = null; + + /** + * Construct the exception + * + * @param string $msg + * @param int $code + * @param Exception $previous + * @return void + */ + public function __construct($msg = '', $code = 0, Exception $previous = null) + { + if (version_compare(PHP_VERSION, '5.3.0', '<')) { + parent::__construct($msg, (int) $code); + $this->_previous = $previous; + } else { + parent::__construct($msg, (int) $code, $previous); + } + } + + /** + * Overloading + * + * For PHP < 5.3.0, provides access to the getPrevious() method. + * + * @param string $method + * @param array $args + * @return mixed + */ + public function __call($method, array $args) + { + if ('getprevious' == strtolower($method)) { + return $this->_getPrevious(); + } + return null; + } + + /** + * String representation of the exception + * + * @return string + */ + public function __toString() + { + if (version_compare(PHP_VERSION, '5.3.0', '<')) { + if (null !== ($e = $this->getPrevious())) { + return $e->__toString() + . "\n\nNext " + . parent::__toString(); + } + } + return parent::__toString(); + } + /** + * Returns previous Exception + * + * @return Exception|null + */ + protected function _getPrevious() + { + return $this->_previous; + } +} |