mirror of
https://github.com/yiisoft/yii2.git
synced 2025-08-16 15:21:13 +08:00
Recursively return previous exceptions in toArray().
This commit is contained in:
@ -29,23 +29,33 @@ class Exception extends \Exception implements Arrayable
|
||||
*/
|
||||
public function toArray()
|
||||
{
|
||||
$array = array(
|
||||
'type' => get_class($this),
|
||||
'name' => $this->getName(),
|
||||
'message' => $this->getMessage(),
|
||||
'code' => $this->getCode(),
|
||||
);
|
||||
if (($prev = $this->getPrevious()) !== null) {
|
||||
if ($prev instanceof self) {
|
||||
$array['previous'] = $prev->toArray();
|
||||
} else {
|
||||
$array['previous'] = array(
|
||||
'type' => get_class($prev),
|
||||
'name' => 'Exception',
|
||||
'message' => $prev->getMessage(),
|
||||
'code' => $prev->getCode(),
|
||||
);
|
||||
}
|
||||
return $this->toArrayRecursive($this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the array representation of the exception and all previous exceptions recursively.
|
||||
* @param \Exception exception object
|
||||
* @return array the array representation of the exception.
|
||||
*/
|
||||
protected function toArrayRecursive($exception)
|
||||
{
|
||||
if ($exception instanceof self) {
|
||||
$array = array(
|
||||
'type' => get_class($this),
|
||||
'name' => $this->getName(),
|
||||
'message' => $this->getMessage(),
|
||||
'code' => $this->getCode(),
|
||||
);
|
||||
} else {
|
||||
$array = array(
|
||||
'type' => get_class($exception),
|
||||
'name' => 'Exception',
|
||||
'message' => $exception->getMessage(),
|
||||
'code' => $exception->getCode(),
|
||||
);
|
||||
}
|
||||
if (($prev = $exception->getPrevious()) !== null) {
|
||||
$array['previous'] = $this->toArrayRecursive($prev);
|
||||
}
|
||||
return $array;
|
||||
}
|
||||
|
Reference in New Issue
Block a user