ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
XmlResponseHandler.php
Go to the documentation of this file.
1 <?php
7 namespace Whoops\Handler;
8 
11 
18 {
22  private $returnFrames = false;
23 
28  public function addTraceToOutput($returnFrames = null)
29  {
30  if (func_num_args() == 0) {
31  return $this->returnFrames;
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 }
Whoops - php errors for cool kids.
Catches an exception and converts it to an XML response.
$data
Abstract implementation of a Handler.
Definition: Handler.php:16
static addDataToNode(\SimpleXMLElement $node, $data)
static toXml($data)
The main function for converting to an XML document.