ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
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 = [
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 }
Whoops - php errors for cool kids.
Catches an exception and converts it to an XML response.
const QUIT
The Handler has handled the Throwable in some way, and wishes to quit/stop execution.
Definition: Handler.php:31
Abstract implementation of a Handler.
Definition: Handler.php:15
static addDataToNode(\SimpleXMLElement $node, $data)
static toXml($data)
The main function for converting to an XML document.
$response
$key
Definition: croninfo.php:18
$data
Definition: bench.php:6