joomla_test/libraries/legacy/exception/exception.php

381 lines
7.9 KiB
PHP
Raw Permalink Normal View History

2020-01-02 22:20:31 +07:00
<?php
/**
* @package Joomla.Legacy
* @subpackage Exception
*
* @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE
*/
defined('JPATH_PLATFORM') or die;
/**
* Joomla! Exception object.
*
* @package Joomla.Legacy
* @subpackage Exception
* @since 11.1
* @deprecated 12.1 (Platform) & 4.0 (CMS)
*/
class JException extends Exception
{
/**
* @var string Error level.
* @since 11.1
*/
protected $level = null;
/**
* @var string Error code.
* @since 11.1
*/
protected $code = null;
/**
* @var string Error message.
* @since 11.1
*/
protected $message = null;
/**
* Additional info about the error relevant to the developer,
* for example, if a database connect fails, the dsn used
*
* @var string
* @since 11.1
*/
protected $info = '';
/**
* Name of the file the error occurred in [Available if backtrace is enabled]
*
* @var string
* @since 11.1
*/
protected $file = null;
/**
* Line number the error occurred in [Available if backtrace is enabled]
*
* @var int
* @since 11.1
*/
protected $line = 0;
/**
* Name of the method the error occurred in [Available if backtrace is enabled]
*
* @var string
* @since 11.1
*/
protected $function = null;
/**
* Name of the class the error occurred in [Available if backtrace is enabled]
*
* @var string
* @since 11.1
*/
protected $class = null;
/**
* @var string Error type.
* @since 11.1
*/
protected $type = null;
/**
* Arguments recieved by the method the error occurred in [Available if backtrace is enabled]
*
* @var array
* @since 11.1
*/
protected $args = array();
/**
* @var mixed Backtrace information.
* @since 11.1
*/
protected $backtrace = null;
/**
* Constructor
* - used to set up the error with all needed error details.
*
* @param string $msg The error message
* @param string $code The error code from the application
* @param integer $level The error level (use the PHP constants E_ALL, E_NOTICE etc.).
* @param string $info Optional: The additional error information.
* @param boolean $backtrace True if backtrace information is to be collected
*
* @since 11.1
*
* @deprecated 12.1
*/
public function __construct($msg, $code = 0, $level = null, $info = null, $backtrace = false)
{
JLog::add('JException is deprecated.', JLog::WARNING, 'deprecated');
$this->level = $level;
$this->code = $code;
$this->message = $msg;
if ($info != null)
{
$this->info = $info;
}
if ($backtrace && function_exists('debug_backtrace'))
{
$this->backtrace = debug_backtrace();
for ($i = count($this->backtrace) - 1; $i >= 0; --$i)
{
++$i;
if (isset($this->backtrace[$i]['file']))
{
$this->file = $this->backtrace[$i]['file'];
}
if (isset($this->backtrace[$i]['line']))
{
$this->line = $this->backtrace[$i]['line'];
}
if (isset($this->backtrace[$i]['class']))
{
$this->class = $this->backtrace[$i]['class'];
}
if (isset($this->backtrace[$i]['function']))
{
$this->function = $this->backtrace[$i]['function'];
}
if (isset($this->backtrace[$i]['type']))
{
$this->type = $this->backtrace[$i]['type'];
}
$this->args = false;
if (isset($this->backtrace[$i]['args']))
{
$this->args = $this->backtrace[$i]['args'];
}
break;
}
}
// Store exception for debugging purposes!
JError::addToStack($this);
parent::__construct($msg, (int) $code);
}
/**
* Returns to error message
*
* @return string Error message
*
* @since 11.1
*
* @deprecated 12.1
*/
public function __toString()
{
JLog::add('JException::__toString is deprecated.', JLog::WARNING, 'deprecated');
return $this->message;
}
/**
* Returns to error message
*
* @return string Error message
*
* @since 11.1
* @deprecated 12.1
*/
public function toString()
{
JLog::add('JException::toString is deprecated.', JLog::WARNING, 'deprecated');
return (string) $this;
}
/**
* Returns a property of the object or the default value if the property is not set.
*
* @param string $property The name of the property
* @param mixed $default The default value
*
* @return mixed The value of the property or null
*
* @deprecated 12.1
* @see getProperties()
* @since 11.1
*/
public function get($property, $default = null)
{
JLog::add('JException::get is deprecated.', JLog::WARNING, 'deprecated');
if (isset($this->$property))
{
return $this->$property;
}
return $default;
}
/**
* Returns an associative array of object properties
*
* @param boolean $public If true, returns only the public properties
*
* @return array Object properties
*
* @deprecated 12.1
* @see get()
* @since 11.1
*/
public function getProperties($public = true)
{
JLog::add('JException::getProperties is deprecated.', JLog::WARNING, 'deprecated');
$vars = get_object_vars($this);
if ($public)
{
foreach ($vars as $key => $value)
{
if ('_' == substr($key, 0, 1))
{
unset($vars[$key]);
}
}
}
return $vars;
}
/**
* Get the most recent error message
*
* @param integer $i Option error index
* @param boolean $toString Indicates if JError objects should return their error message
*
* @return string Error message
*
* @since 11.1
*
* @deprecated 12.1
*/
public function getError($i = null, $toString = true)
{
JLog::add('JException::getError is deprecated.', JLog::WARNING, 'deprecated');
// Find the error
if ($i === null)
{
// Default, return the last message
$error = end($this->_errors);
}
elseif (!array_key_exists($i, $this->_errors))
{
// If $i has been specified but does not exist, return false
return false;
}
else
{
$error = $this->_errors[$i];
}
// Check if only the string is requested
if ($error instanceof Exception && $toString)
{
return (string) $error;
}
return $error;
}
/**
* Return all errors, if any
*
* @return array Array of error messages or JErrors
*
* @since 11.1
*
* @deprecated 12.1
*/
public function getErrors()
{
JLog::add('JException::getErrors is deprecated.', JLog::WARNING, 'deprecated');
return $this->_errors;
}
/**
* Modifies a property of the object, creating it if it does not already exist.
*
* @param string $property The name of the property
* @param mixed $value The value of the property to set
*
* @return mixed Previous value of the property
*
* @deprecated 12.1
* @see setProperties()
* @since 11.1
*/
public function set($property, $value = null)
{
JLog::add('JException::set is deprecated.', JLog::WARNING, 'deprecated');
$previous = isset($this->$property) ? $this->$property : null;
$this->$property = $value;
return $previous;
}
/**
* Set the object properties based on a named array/hash
*
* @param mixed $properties Either and associative array or another object
*
* @return boolean
*
* @deprecated 12.1
* @see set()
* @since 11.1
*/
public function setProperties($properties)
{
JLog::add('JException::setProperties is deprecated.', JLog::WARNING, 'deprecated');
// Cast to an array
$properties = (array) $properties;
if (is_array($properties))
{
foreach ($properties as $k => $v)
{
$this->$k = $v;
}
return true;
}
return false;
}
/**
* Add an error message
*
* @param string $error Error message
*
* @return void
*
* @since 11.1
*
* @deprecated 12.1
*/
public function setError($error)
{
JLog::add('JException::setErrors is deprecated.', JLog::WARNING, 'deprecated');
array_push($this->_errors, $error);
}
}