ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
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 = array(
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
60 private static function addDataToNode(\SimpleXMLElement $node, $data)
61 {
62 assert('is_array($data) || $node instanceof Traversable');
63
64 foreach ($data as $key => $value) {
65 if (is_numeric($key)) {
66 // Convert the key to a valid string
67 $key = "unknownNode_". (string) $key;
68 }
69
70 // Delete any char not allowed in XML element names
71 $key = preg_replace('/[^a-z0-9\-\_\.\:]/i', '', $key);
72
73 if (is_array($value)) {
74 $child = $node->addChild($key);
75 self::addDataToNode($child, $value);
76 } else {
77 $value = str_replace('&', '&amp;', print_r($value, true));
78 $node->addChild($key, $value);
79 }
80 }
81
82 return $node;
83 }
84
91 private static function toXml($data)
92 {
93 assert('is_array($data) || $node instanceof Traversable');
94
95 $node = simplexml_load_string("<?xml version='1.0' encoding='utf-8'?><root />");
96
97 return self::addDataToNode($node, $data)->asXML();
98 }
99}
Abstract implementation of a Handler.
Definition: Handler.php:17
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.
$data
Whoops - php errors for cool kids.