1: <?php
2: /**
3: * Zend Framework
4: *
5: * LICENSE
6: *
7: * This source file is subject to the new BSD license that is bundled
8: * with this package in the file LICENSE.txt.
9: * It is also available through the world-wide-web at this URL:
10: * http://framework.zend.com/license/new-bsd
11: * If you did not receive a copy of the license and are unable to
12: * obtain it through the world-wide-web, please send an email
13: * to license@zend.com so we can send you a copy immediately.
14: *
15: * @category Zend
16: * @package Zend
17: * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
18: * @license http://framework.zend.com/license/new-bsd New BSD License
19: * @version $Id: Exception.php 23484 2010-12-10 03:57:59Z mjh_ca $
20: */
21:
22: /**
23: * @category Zend
24: * @package Zend
25: * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
26: * @license http://framework.zend.com/license/new-bsd New BSD License
27: */
28: class Zend_Exception extends Exception
29: {
30: /**
31: * @var null|Exception
32: */
33: private $_previous = null;
34:
35: /**
36: * Construct the exception
37: *
38: * @param string $msg
39: * @param int $code
40: * @param Exception $previous
41: * @return void
42: */
43: public function __construct($msg = '', $code = 0, Exception $previous = null)
44: {
45: if (version_compare(PHP_VERSION, '5.3.0', '<')) {
46: parent::__construct($msg, (int) $code);
47: $this->_previous = $previous;
48: } else {
49: parent::__construct($msg, (int) $code, $previous);
50: }
51: }
52:
53: /**
54: * Overloading
55: *
56: * For PHP < 5.3.0, provides access to the getPrevious() method.
57: *
58: * @param string $method
59: * @param array $args
60: * @return mixed
61: */
62: public function __call($method, array $args)
63: {
64: if ('getprevious' == strtolower($method)) {
65: return $this->_getPrevious();
66: }
67: return null;
68: }
69:
70: /**
71: * String representation of the exception
72: *
73: * @return string
74: */
75: public function __toString()
76: {
77: if (version_compare(PHP_VERSION, '5.3.0', '<')) {
78: if (null !== ($e = $this->getPrevious())) {
79: return $e->__toString()
80: . "\n\nNext "
81: . parent::__toString();
82: }
83: }
84: return parent::__toString();
85: }
86:
87: /**
88: * Returns previous Exception
89: *
90: * @return Exception|null
91: */
92: protected function _getPrevious()
93: {
94: return $this->_previous;
95: }
96: }
97: