Commit b184a75d by Qiang Xue

Recursively return previous exceptions in toArray().

parent df0779fb
...@@ -29,23 +29,33 @@ class Exception extends \Exception implements Arrayable ...@@ -29,23 +29,33 @@ class Exception extends \Exception implements Arrayable
*/ */
public function toArray() public function toArray()
{ {
$array = array( return $this->toArrayRecursive($this);
'type' => get_class($this), }
'name' => $this->getName(),
'message' => $this->getMessage(), /**
'code' => $this->getCode(), * Returns the array representation of the exception and all previous exceptions recursively.
); * @param \Exception exception object
if (($prev = $this->getPrevious()) !== null) { * @return array the array representation of the exception.
if ($prev instanceof self) { */
$array['previous'] = $prev->toArray(); protected function toArrayRecursive($exception)
} else { {
$array['previous'] = array( if ($exception instanceof self) {
'type' => get_class($prev), $array = array(
'name' => 'Exception', 'type' => get_class($this),
'message' => $prev->getMessage(), 'name' => $this->getName(),
'code' => $prev->getCode(), '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; return $array;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment