File indexing completed on 2024-04-28 06:00:01

0001 <?php
0002 /**
0003  * Zend Framework
0004  *
0005  * LICENSE
0006  *
0007  * This source file is subject to the new BSD license that is bundled
0008  * with this package in the file LICENSE.txt.
0009  * It is also available through the world-wide-web at this URL:
0010  * http://framework.zend.com/license/new-bsd
0011  * If you did not receive a copy of the license and are unable to
0012  * obtain it through the world-wide-web, please send an email
0013  * to license@zend.com so we can send you a copy immediately.
0014  *
0015  * @category   Zend
0016  * @package    Zend
0017  * @copyright  Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
0018  * @license    http://framework.zend.com/license/new-bsd     New BSD License
0019  * @version    $Id$
0020  */
0021 
0022 /**
0023 * @category   Zend
0024 * @package    Zend
0025 * @copyright  Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
0026 * @license    http://framework.zend.com/license/new-bsd     New BSD License
0027 */
0028 class Zend_Exception extends Exception
0029 {
0030     /**
0031      * @var null|Exception
0032      */
0033     private $_previous = null;
0034 
0035     /**
0036      * Construct the exception
0037      *
0038      * @param  string $msg
0039      * @param  int $code
0040      * @param  Exception $previous
0041      * @return void
0042      */
0043     public function __construct($msg = '', $code = 0, Exception $previous = null)
0044     {
0045         if (version_compare(PHP_VERSION, '5.3.0', '<')) {
0046             parent::__construct($msg, (int) $code);
0047             $this->_previous = $previous;
0048         } else {
0049             parent::__construct($msg, (int) $code, $previous);
0050         }
0051     }
0052 
0053     /**
0054      * Overloading
0055      *
0056      * For PHP < 5.3.0, provides access to the getPrevious() method.
0057      *
0058      * @param  string $method
0059      * @param  array $args
0060      * @return mixed
0061      */
0062     public function __call($method, array $args)
0063     {
0064         if ('getprevious' == strtolower($method)) {
0065             return $this->_getPrevious();
0066         }
0067         return null;
0068     }
0069 
0070     /**
0071      * String representation of the exception
0072      *
0073      * @return string
0074      */
0075     public function __toString()
0076     {
0077         if (version_compare(PHP_VERSION, '5.3.0', '<')) {
0078             if (null !== ($e = $this->getPrevious())) {
0079                 return $e->__toString()
0080                        . "\n\nNext "
0081                        . parent::__toString();
0082             }
0083         }
0084         return parent::__toString();
0085     }
0086 
0087     /**
0088      * Returns previous Exception
0089      *
0090      * @return Exception|null
0091      */
0092     protected function _getPrevious()
0093     {
0094         return $this->_previous;
0095     }
0096 }