ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
XmlResponseHandler.php
Go to the documentation of this file.
1<?php
7namespace Whoops\Handler;
8
9use SimpleXMLElement;
11
18{
22 private $returnFrames = false;
23
28 public function addTraceToOutput($returnFrames = null)
29 {
30 if (func_num_args() == 0) {
32 }
33
34 $this->returnFrames = (bool) $returnFrames;
35 return $this;
36 }
37
41 public function handle()
42 {
43 $response = [
44 'error' => Formatter::formatExceptionAsDataArray(
45 $this->getInspector(),
46 $this->addTraceToOutput()
47 ),
48 ];
49
50 echo $this->toXml($response);
51
52 return Handler::QUIT;
53 }
54
58 public function contentType()
59 {
60 return 'application/xml';
61 }
62
68 private static function addDataToNode(\SimpleXMLElement $node, $data)
69 {
70 assert('is_array($data) || $node instanceof Traversable');
71
72 foreach ($data as $key => $value) {
73 if (is_numeric($key)) {
74 // Convert the key to a valid string
75 $key = "unknownNode_". (string) $key;
76 }
77
78 // Delete any char not allowed in XML element names
79 $key = preg_replace('/[^a-z0-9\-\_\.\:]/i', '', $key);
80
81 if (is_array($value)) {
82 $child = $node->addChild($key);
83 self::addDataToNode($child, $value);
84 } else {
85 $value = str_replace('&', '&amp;', print_r($value, true));
86 $node->addChild($key, $value);
87 }
88 }
89
90 return $node;
91 }
92
99 private static function toXml($data)
100 {
101 assert('is_array($data) || $node instanceof Traversable');
102
103 $node = simplexml_load_string("<?xml version='1.0' encoding='utf-8'?><root />");
104
105 return self::addDataToNode($node, $data)->asXML();
106 }
107}
An exception for terminatinating execution or to throw for unit testing.
Abstract implementation of a Handler.
Definition: Handler.php:16
const QUIT
The Handler has handled the Throwable in some way, and wishes to quit/stop execution.
Definition: Handler.php:31
Catches an exception and converts it to an XML response.
static addDataToNode(\SimpleXMLElement $node, $data)
static toXml($data)
The main function for converting to an XML document.
$key
Definition: croninfo.php:18
Whoops - php errors for cool kids.
$response