xmlWriter = new \XMLWriter(); // Open temporary storage if ($tempLocation == self::STORAGE_MEMORY) { $this->xmlWriter->openMemory(); } else { // Create temporary filename $this->tempFile = @tempnam($tempFolder, 'xml'); // Open storage if ($this->xmlWriter->openUri($this->tempFile) === false) { // Fallback to memory... $this->xmlWriter->openMemory(); } } // Set xml Compatibility $compatibility = Settings::hasCompatibility(); if ($compatibility) { $this->xmlWriter->setIndent(false); $this->xmlWriter->setIndentString(''); } else { $this->xmlWriter->setIndent(true); $this->xmlWriter->setIndentString(' '); } } /** * Destructor */ public function __destruct() { // Destruct XMLWriter unset($this->xmlWriter); // Unlink temporary files if ($this->tempFile != '') { @unlink($this->tempFile); } } /** * Catch function calls (and pass them to internal XMLWriter) * * @param mixed $function * @param mixed $args */ public function __call($function, $args) { try { @call_user_func_array(array($this->xmlWriter, $function), $args); } catch (\Exception $ex) { // Do nothing! } } /** * Get written data * * @return string XML data */ public function getData() { if ($this->tempFile == '') { return $this->xmlWriter->outputMemory(true); } else { $this->xmlWriter->flush(); return file_get_contents($this->tempFile); } } /** * Fallback method for writeRaw, introduced in PHP 5.2 * * @param string $text * @return bool */ public function writeRaw($text) { if (isset($this->xmlWriter) && is_object($this->xmlWriter) && (method_exists($this->xmlWriter, 'writeRaw'))) { return $this->xmlWriter->writeRaw($text); } return $this->text($text); } }