]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - Zend/Exception.php
Release 6.5.16
[Github/sugarcrm.git] / Zend / Exception.php
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  */
20
21 /**
22 * @category   Zend
23 * @package    Zend
24 * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
25 * @license    http://framework.zend.com/license/new-bsd     New BSD License
26 */
27 class Zend_Exception extends Exception
28 {
29     /**
30      * @var null|Exception
31      */
32     private $_previous = null;
33
34     /**
35      * Construct the exception
36      *
37      * @param  string $msg
38      * @param  int $code
39      * @param  Exception $previous
40      * @return void
41      */
42     public function __construct($msg = '', $code = 0, Exception $previous = null)
43     {
44         if (version_compare(PHP_VERSION, '5.3.0', '<')) {
45             parent::__construct($msg, (int) $code);
46             $this->_previous = $previous;
47         } else {
48             parent::__construct($msg, (int) $code, $previous);
49         }
50     }
51
52     /**
53      * Overloading
54      *
55      * For PHP < 5.3.0, provides access to the getPrevious() method.
56      * 
57      * @param  string $method 
58      * @param  array $args 
59      * @return mixed
60      */
61     public function __call($method, array $args)
62     {
63         if ('getprevious' == strtolower($method)) {
64             return $this->_getPrevious();
65         }
66         return null;
67     }
68
69     /**
70      * String representation of the exception
71      *
72      * @return string
73      */
74     public function __toString()
75     {
76         if (version_compare(PHP_VERSION, '5.3.0', '<')) {
77             if (null !== ($e = $this->getPrevious())) {
78                 return $e->__toString() 
79                        . "\n\nNext " 
80                        . parent::__toString();
81             }
82         }
83         return parent::__toString();
84     }
85
86     /**
87      * Returns previous Exception
88      *
89      * @return Exception|null
90      */
91     protected function _getPrevious()
92     {
93         return $this->_previous;
94     }
95 }